JSON形式でデータを返すPHP Webサービスに取り組んでいます。私は現在、jQuery/javascript ファイルを使用して Web サービスをテストしています。呼び出しを行ってデータを正しく受信しているようですが、サーバーからの戻り値に二重引用符が多すぎるようです。
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.";
}
});
1 つは、msg
オブジェクトが JSON オブジェクトとして返されるのではなく、代わりに文字列として返されるため、これを行う必要がある$.parseJSON(msg)
ことです。以下に示すように、token 変数は最終的に "mylongtoken" (引用符を含む) と書き出されます。そして、firebug でその変数を見ると、""mylongtoken"" のようになっています。これは単なるデフォルトの動作であり、引用符を削除する必要がありますか?