$.ajax を使用して、php スクリプトから JSON 応答を取得しています。$.ajax 成功関数からデータ変数をログに記録すると、適切にフォーマットされた JSON オブジェクトが出力されますが、データ変数のプロパティにアクセスしようとすると、未定義になります。送り返されているphpは次のとおりです。
echo json_encode(array("status"=>true, "success"=>"Login Success", "message"=>"You have been logged in successfully."));
そして、ここに私のajax呼び出しがあります:
$.ajax({
type: "POST",
data: {
login: true,
username: $('#login-username').val(),
password: $('#login-password').val()
},
async: false,
url: "./php/client-login.php",
success: function (data) {
console.log(data.status);
if (data.status) {
console.log(data.success);
displayModal(data.success, data.message, "./js/login-modal-code.js");
} else if (!data.status) {
displayModal(data.error, data.message, "./js/login-modal-code.js");
}
},
error: function (jqXHR, status, responseText) {
console.log(status);
}
});
dataType: "json"
オプションを $.ajax 呼び出しに追加すると、解析エラーが発生し、データ変数$.parseJSON(data);
のデータにアクセスしようとすると、予期しないトークン エラーが発生します。何が間違っているのかよくわかりません。以前にこのセットアップを使用したことがあり、以前は常に機能していましたが、何らかの理由で現在は機能していません。誰かが私が間違っているところを見ますか?
編集: ここで言及するのを忘れていたのは、php スクリプトからの応答です:
{"status":true,"success":"Login Success","message":"You have been logged in successfully."}
編集 2: これが私のコンソールの画面です。上部の .length 呼び出しは、ログに記録された json でconsole.log(data)
あり、下部の呼び出しは、php スクリプトからの応答に対する chrome dev tools ネットワーク タブの応答からのものです。それらは完全に並んでいますが、2 番目は 93 の長さを示しています。これを修正するにはどうすればよいですか?