2011-04-21 49 views
21

每次我運行我的ajax jquery函數時出現錯誤,這適用於我所有的ajax調用。 這裏是我的代碼示例ajax jquery始終運行錯誤

function FindContact(CompanyName,DivisionName,FirstName,LastName) { 

     $.ajax({ 
      url: 'Path', 
      dataType: "json", 
      async:false, 
      type:'post', 
      data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName}, 
      success: DisplayContacts, 
      error: ErrorMsg 
     }); 
    } 

來解決這個我用這個

function ErrorMsg(result) { 
     if (result.status == 200 && result.statusText == 'OK') { 
      DisplayContacts(result); 
     } 
     else { 
      alert("FAILED : " + result.status + ' ' + result.statusText); 
     } 
    } 

這是艱難的,因爲我需要這樣的創建方法爲每一個Ajax請求。

它爲什麼運行錯誤代碼1st?

請幫忙!

+2

確保你要返回的是有效的json。如果沒有,並且服務器上的所有內容都正確,$ .ajax將會出錯而不是成功。 – locrizak 2011-04-21 13:33:36

+0

你好, - 你是否檢查過狀態碼是什麼(使用.alert())? - 您是否檢查過目標頁面使用相同的方法將結果發回? – reporter 2011-04-21 13:35:06

+0

@locrizak:如何檢查我是否返回了有效的json – David 2011-04-21 13:41:31

回答

44

確保您返回的是有效的json。如果沒有,並且服務器上的所有內容都正確,$ .ajax將會出錯而不是成功。

 
function FindContact(CompanyName,DivisionName,FirstName,LastName) { 

     $.ajax({ 
      url: 'Path', 
      dataType: "html or json", 
      async:false, 
      type:'post', 
      data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName}, 
      success: DisplayContacts, 
      error: ErrorMsg 
     }); 
    } 
 

快速檢查json是否有效只是將dataType切換到html並看到成功被觸發。如果它比你的json無效,如果你仍然遇到同樣的問題,那麼他們還有其他錯誤。

檢查是否返回有效的json的另一種方法是打開firebug,當發送請求時,單擊響應選項卡,複製響應併到達jsonlint.com以檢查其是否有效。

Jquery ajax docs

+0

你說得對。它適用於html – David 2011-04-26 20:53:34

+0

更改爲:dataType:「json」 - 像魅力一樣工作! – 2016-03-15 13:44:02

2

我的解決辦法是差異接受型和Content-Type頭。如果客戶端請求的Accept-Type頭與服務器端響應的Content-Type頭不匹配,那麼Jquery將調用錯誤回調。

默認情況下,Jquery將Accept-Type頭設置爲application/json。但是,我的服務器正在發送Content-Type application/x-javascript的響應。我的修復是將服務器端響應Content-Type標題更改爲適當的application/json

+0

您是如何更改服務器端的內容類型標題的? +1,如果你回答我。 – David 2013-07-03 09:07:25

+2

你有什麼服務器端環境?我在PHP上是這樣的: 'header('Content-Type:application/json');' – charltoons 2013-07-22 00:20:39

2

我在使用jquery ajax進行ajax調用時遇到了同樣的問題。我固定它使用下面的代碼:

$.ajax({ 
    url: "/url", 
    dataType: 'text', 
    success: function(result){ alert(result); }, 
    error: ErrorMsg, 
}); 

注:數據類型:「文本」參數,它爲我工作。