0

Ajaxを介してJSONオブジェクトをクライアントに返す次のPHPコードがあります。

function loadAll(){
    $knowledgeHandler = new KnowledgeLevelHandler();
    $json = $knowledgeHandler->loadAll();        
    header('Content-type: application/json');
    print $json;
}

jQueryAjaxの成功コールバックに割り当てられたテスト関数があります。

successCallback = function(data){
    alert("A");
}

options = {    
    "data": data,
    "async": false,
    "type": "post",
    "success":successCallback        
}
$.ajax(url, options);

PHPコードからを削除するheader('Content-type: text/json');と、コールバックは実行されますが、実行されると、成功コールバックは実行されません。なにが問題ですか?

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

jsonが戻ってくることを期待していることをjQueryに伝えてみてください。

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

また、引数としてxhr、msg、codeを使用してエラーコールバックを追加し、それらを出力して、何が問題であるかをよりよく理解することもできます。

于 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 に答える