0

我有以下 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);

当我header('Content-type: text/json');从 PHP 代码中删除时,回调被执行,但是当它被执行时,成功回调没有被执行。怎么了?

4

3 回答 3

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 等

尼尔

于 2012-05-15T21:34:42.123 回答
1

试着告诉 jQuery 你期待 json 回来。

options = {    
    "data": data,
    "async": false,
    "type": "post",
    "success":successCallback,
    "dataType": "json"       
}

您还可以使用 xhr、msg、代码作为 args 添加错误回调并输出这些以更好地了解问题所在。

于 2012-05-15T21:28:17.457 回答
1

尝试这个:

options = {    
    "data": data,
    "async": false,
    "type": "post",
    "success":successCallback,        
    "dataType: "json"
}
$.ajax(url, options);
于 2012-05-15T21:32:07.560 回答