我正在使用 $.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);
访问 data var 中的数据,我会收到意外的令牌错误。我不太确定我做错了什么,我以前使用过这个设置,它以前一直有效,但由于某种原因现在不是。有人看到我哪里出错了吗?
编辑:这里忘了提到的是来自 php 脚本的响应:
{"status":true,"success":"Login Success","message":"You have been logged in successfully."}
编辑 2:这是我的控制台的屏幕。顶部 .length 调用是记录的 json,console.log(data)
底部调用来自 chrome 开发工具网络选项卡中的响应,用于 php 脚本的响应。他们完美地排列,但第二个显示长度为 93,我该如何解决这个问题?