2013-05-29 38 views
0

我有以下代碼:jQuery的阿賈克斯。員額()問題

$(document).ready(function() { 

    console.log("Document ready..."); 

    $.post("...file.asmx/HelloWorld", function(data) { 

      console.log("Post Successful");    
    });    
}); 

我得到以下控制檯輸出:

[10:01:44.528] Document ready... 
[10:01:44.601] POST ..file.asmx/HelloWorld [HTTP/1.1 200 OK 103ms] 

我的問題是,爲什麼是第二個日誌呼叫不執行?看起來帖子是成功的,並且該函數應該執行。我使用的是Firefox。

另外:

$(document).ajaxError(function(event, jqxhr, settings, exception) { 
     console.log("Triggered ajaxError handler."); 
     console.log(exception); 
}); 

當我嘗試登錄的例外,我得到我的控制檯中的空行。

+0

根據從服務返回什麼類型的數據,你可能想傳遞一個第四個參數來'$ .post()'表示響應的格式(JSON,HTML,文本等)。如果你不這樣做,jQuery會猜測如何根據它的Content-Type頭解析響應。另外,我認爲在jQuery的最新版本中,空的響應被認爲是無效的JSON,而它用於沒有問題 – Ian

回答

2

A 200 OK響應不保證成功的AJAX調用。

異源資源共享規則可能會禁止訪問資源,或者返回的內容可能無法解析。

添加一個錯誤回調函數,並查看是否調用了該函數,如果是,則使用什麼參數。

由於$.post不直接支持一個錯誤回調,您可以使用「推遲」語法:

$.post(...).fail(function(jqXHR, textStatus, errorThrown) { 
    // log here 
}); 
+0

「HTTP/1.1 200 OK」 – Ven

+1

@ user1737909僅僅因爲HTTP狀態正常,它並不保證下載被正確解析。或者它可能沒有通過CORS安全檢查。 – Alnitak

+0

當我嘗試並記錄errorThrown時,什麼也沒有顯示,但函數被調用。 –