[英]PHP not correctly returning JSON for an AJAX call
我有一個PHP函數,該函數應該將JSON對象返回給AJAX調用,但實際上它返回的是字符串。 這是我從AJAX調用中調用的PHP。
<?php
echo json_encode(array("error", 0, "Success!"));
?>
這是AJAX調用。
$.ajax({
type: "POST",
url: "../api/login.php",
data: { id: username, password: password },
success: function(response) {
alert( "Data Saved: " + response );
$("#login_username").val("");
$("#login_password").val("");
}
});
當此函數返回時,我嘗試在控制台中訪問響應,這就是發生的情況
response
> "["error",0,"Success!"]"
response[0]
> "["
如果期望對象,請在ajax設置中指定dataType:json
。 它還將確保如果服務器發送了任何無效的JSON,則會因解析錯誤而將其弄錯。 很可能您沒有在響應標頭中指定內容類型( application/json; charset=utf-8
),該內容類型使jquery可以確定mime類型本身,因此請指定dataType
以確保獲得對象或錯誤返回(如果無效的JSON)。
$.ajax({
type: "POST",
dataType:'json'
url: "../api/login.php",
data: { id: username, password: password },
success: function(response) {
alert( "Data Saved: " + response );
$("#login_username").val("");
$("#login_password").val("");
}
});
您的實現似乎正在使用jQuery或jQuery的某些模型。 如果未使用jQuery,我將很樂意為您的問題分享更多解決方案。
添加數據類型
$.ajax({
dataType: 'json',
type: "POST",
url: "../api/login.php",
data: { id: username, password: password },
success: function(response) {
alert( "Data Saved: " + response );
$("#login_username").val("");
$("#login_password").val("");
}
});
問題在於,默認情況下,jQuery需要一個字符串。
var foo = "bar";
foo[1] === "a"; // true
文檔: jQuery.ajax
在你的ajaxcall中添加一個參數
$.ajax({
type: "POST",
url: "../api/login.php",
data: { id: username, password: password },
dataType: "json" //-< add this param.
success: function(response) {
alert( "Data Saved: " + response );
$("#login_username").val("");
$("#login_password").val("");
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.