我有以下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');
时,会执行回调,但执行回调时,不会执行成功回调。怎么了?
答案 0 :(得分:2)
我认为你需要在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等
尼尔
答案 1 :(得分:1)
尝试告诉jQuery你期待json回来。
options = {
"data": data,
"async": false,
"type": "post",
"success":successCallback,
"dataType": "json"
}
您还可以使用xhr,msg,代码作为参数添加错误回调,然后输出这些回调以更好地了解错误。
答案 2 :(得分:1)
试试这个:
options = {
"data": data,
"async": false,
"type": "post",
"success":successCallback,
"dataType: "json"
}
$.ajax(url, options);