我使用$ .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