我使用$ .ajax从php脚本中获取JSON响应。如果我从$ .ajax成功函数中记录数据变量,它会输出格式正确的JSON对象,但是当我尝试访问数据变量的属性时,它是未定义的。这里是PHP的被送回:jQuery响应从jQuery.ajax中的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"
选项到$就呼叫我得到一个语法错误,并且如果我尝试执行$.parseJSON(data);
来访问我获得的数据中的数据以及意外的令牌错误。我不确定我做错了什么,我之前使用过这个设置,它之前一直有效,但由于某种原因,它现在不是。有人看到我出错了吗?
编辑:忘了这里提到的是来自PHP脚本的响应:
{"status":true,"success":"Login Success","message":"You have been logged in successfully."}
编辑2:这里是我的控制台的屏幕。顶部的.length调用是从console.log(data)
记录的json,最底部的是来自chrome dev工具网络选项卡中的响应,以便从php脚本响应。他们排队完美,但第二个显示长度为93,我该如何解决这个问题?
在猜测我会说你的PHP脚本包括意想不到的东西输出,就像一个空行。 – 2013-06-28 00:35:21
空格不应该导致解析JSON时出现问题,但我怀疑其他某个角色正在滑过,而您没有看到它。 – Barmar
也许在PHP文件中有一个BOM。 – Barmar