2012-05-15 43 views
0

我有以下PHP代碼,通過Ajax將JSON對象返回給客戶端。使用jQuery,爲什麼當通過Ajax返回JSON時,不執行Success Callback?

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

是否有您使用同步請求的具體原因?也許嘗試異步? –

+0

我通常不會設置標題類型,我只是回顯字符串,例如echo json_encode(array(「success」=> true)); – gunnx

回答

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等

Neal

1

試着告訴jQuery你期待json回來。

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

你還可以添加一個錯誤回調與XHR,味精,代碼作爲指定參數和輸出那些得到的什麼是錯的一個更好的主意。

1

試試這個:

options = {  
    "data": data, 
    "async": false, 
    "type": "post", 
    "success":successCallback,   
    "dataType: "json" 
} 
$.ajax(url, options); 
相關問題