2013-05-13 73 views
3

我是初學jQuery ajax。當我使用async: false時,我的下面的ajax代碼工作正常,但由於Firefox中的問題,我在提及此link(我面臨同樣的問題)後將其刪除。現在它不工作。甚至沒有顯示任何錯誤。既沒有成功也沒有錯誤工作在jQuery中ajax

這是我的代碼:

try { 
    _ajaxCall = $.ajax({ 
     url: URL, 
     type: "POST", 
     data: "drqlFragment=" + text, 
     //async : false, 
     cache: false, 
     headers: { 
      accept: "application/json", 
      contentType: "application/x-www-form-urlencoded" 
     }, 
     contentType: "application/x-www-form-urlencoded", 
     //processData : true, 
     success: function (data, textStatus, jqXHR) { 
      var resData = data.suggestions; 
      for (var i = 0; i < resData.length; i++) { 
       sugData.push(resData[i].keyword); 
      } 
     }, 
     error: function (response) { 
      //Error here 
      alert('hello'); 
     } 
    }); 
} catch (e) { 
    alert(e); 
} 

上面的代碼既不執行success也不error。我甚至試圖通過保持try catch阻止但不使用來發現錯誤。

+0

你怎麼知道它沒有執行'success'回調?僅供參考,'async:true'是默認設置,所以我懷疑刪除它會導致任何問題(或更改行爲)。 – 2013-05-13 07:38:44

+1

你的服務器返回什麼數據?嘗試在成功回調中記錄控制檯中的某些內容,如console.log('success');控制檯中出現錯誤 – palerdot 2013-05-13 07:39:15

+0

? – 2013-05-13 07:39:28

回答

3

問題是我在做成功回調函數之外的操作。當我使用async: false時它工作正常。這意味着ajax調用將是同步的。當我刪除async: false時,我在成功回調函數之外執行的操作不起作用。問題是由於ajax調用的異步行爲。當異步調用ajax調用時,它不會像代碼原型那樣一步一步地從上到下流動,但它可以隨時發生。所以,我無法獲得所需的輸出。

當我在成功回調中替換代碼操作時,我的代碼工作正常。 感謝@mccannf指出了上述評論中的問題。 :)。

相關問題