我正在研究以JSON形式返回數據的PHP Web服務。我現在正在使用jQuery/javascript文件測試Web服務。它似乎在正確地調用和接收數據,但服務器的返回值似乎有太多的雙引號。json_encode添加太多雙引號
PHP:
public static function getToken($username, $password)
{
$token = AuthenticationController::authenticate($username, $password);
if ($token)
{
$user = AuthenticationController::getUserFromToken($token);
if (UserController::userIsVerified($user->id))
{
$t = array('token' => $token);
return json_encode($t);
}
return json_encode(array('error' => 'This account has not been verified. Check email and click the provided link to verify the account.'));
}
return json_encode(array('error' => 'Authentication failed.'));
}
JS:
req.done(function(msg)
{
if (msg.error)
{
error = true;
message = msg.error;
}
else if (msg.message)
{
message = msg.message;
}
else if (msg.token)
{
token = msg.token;
}
else
{
error = true;
message = "An unknown error has occured.";
}
});
其一,msg
對象不回來了作爲一個JSON對象,而是它有一個字符串,所以我必須做的一個$.parseJSON(msg)
就可以了。你在下面看到的令牌變量最後寫出來是「mylongtoken」(包括引號)。如果你在螢火蟲中查看這個變量,就像這樣:「」mylongtoken「」。這只是默認行爲,我需要去掉引號?
將你的json結果粘貼在這裏 – GBD
你是否告訴ajax函數期望從服務器返回一個dataType:'json'?如果沒有,你必須每次解析obj。如果你有太多的「雙引號」,是否是你拉入對象的數據的問題?我們可以看到返回的'string'嗎? – Ohgodwhy
這是返回的原始字符串。 「{」token「:」mylongtoken「}」...你如何告訴$ .post你期待json? –