使用jQuery,为什么在通过Ajax返回JSON时不执行Success Callback?

时间:2012-05-15 21:23:56

标签: php jquery ajax json callback

我有以下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');时,会执行回调,但执行回调时,不会执行成功回调。怎么了?

3 个答案:

答案 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);