我有以下PHP代码,它通过Ajax向客户端返回一个JSON对象。
function loadAll(){
$knowledgeHandler = new KnowledgeLevelHandler();
$json = $knowledgeHandler->loadAll();
header('Content-type: application/json');
print $json;
}
我有一个测试函数分配给jQuery Ajax的成功回调。
successCallback = function(data){
alert("A");
}
options = {
"data": data,
"async": false,
"type": "post",
"success":successCallback
}
$.ajax(url, options);
当我从 PHP 代码中删除header('Content-type: text/json');
时,会执行回调,但在执行时,不会执行成功回调。怎么了?
我相信您需要在JQuery AJAX调用中将返回的数据类型指定为JSON。
http://api.jquery.com/jQuery.ajax/
json 类型将获取的数据文件解析为 JavaScript 对象,并且 返回构造的对象作为结果数据。
successCallback = function(data){
alert("A");
}
options = {
data: data,
async: false,
type: "POST",
success: "successCallback",
dataType: "json"
}
$.ajax(url, options);
您的successCallback函数现在将包含一个数据对象,您可以通过该对象访问变量;data.var_1,data.some_other_var等。
尼尔
试着告诉jQuery你期待json回来。
options = {
"data": data,
"async": false,
"type": "post",
"success":successCallback,
"dataType": "json"
}
您还可以添加错误回调,将 xhr、msg、代码作为参数,并输出这些回调以更好地了解问题所在。
试试这个:
options = {
"data": data,
"async": false,
"type": "post",
"success":successCallback,
"dataType: "json"
}
$.ajax(url, options);