2011-12-16 109 views
1

據我所知,$.ajax在所有瀏覽器中一直工作得很順利,直到現在。 我有一個非常簡單的函數,在用戶發生幾個動作時調用。在Firefox中,一切都運行平穩。但在Chrome中,$.ajax請求啓動時,成功回調不會觸發。Chrome jquery ajax回調成功不發射

這裏是真正的代碼段:

var form = $("#templateCreator"), 
    formType = form.attr("method"), 
    formData = form.serialize(), 
    action = form.attr('action'); 

    $.ajax({ 
     type: formType, 
     url: action, 
     data: formData, 
     success: function(){ 
      console.log('Can\'t see me in Chrome, but ok in firefox !') 

      // Handle all form submit events to form validator first 
      validator(form, targetInput); 
     } 
    }); 

什麼是令人費解的是似乎沒有任何錯誤,數據序列化,並送到正確。有誰知道我錯過了什麼?

+1

您是否嘗試過記錄AJAX調用中使用的變量的值(`formType` /`formData` /`action`)?你是否依靠`validator()`函數來驗證它是否正常工作,或者你是否試圖將`console.log()`作爲你的`success`回調的第一行? – Jasper 2011-12-16 17:28:34

+3

localhost?如果屬實,那爲什麼它不起作用。 Chrome不允許在本地主機上使用AJAX – andlrc 2011-12-16 17:28:58

+0

@AndreasAL,你在本地主機上做錯了。 – Esailija 2011-12-16 17:30:24

回答

2

以@Jasper建議的方式添加錯誤和完整方法開始。

$.ajax({ 
     type: formType, 
     url: action, 
     data: formData, 
     success: function(){ 
      console.log('Can\'t see me in Chrome, but ok in firefox !') 

      // Handle all form submit events to form validator first 
      validator(form, targetInput); 
     }, 
     error: function() { 
      console.log($.makeArray(arguments)); 
     }, 
     complete: function() { 
      console.log($.makeArray(arguments)); 
     } 
    }); 

然後,您可以:

  1. 打開Chrome調試器(F12),轉到腳本標籤,並把成功/完成/錯誤中的斷點;檢查出堆棧跟蹤和值的突然顯現;)
  2. 看看控制檯日誌
  3. 爲了大快樂,把每個Zig!
3

試試這個.....

數據:FORMDATA, 異步:假,

鉻與異步調用的一些問題。

1

我有這個問題,並設置async:false。這在Chrome中適用於我。 Chrome看起來像是async:true的問題。

restget = function(url, cb){ 
     $.ajax({ 
     url: url, 
     dataType: 'json', 
     crossDomain: true, 
     async: false, 
     success: cb 
     }); 
0

我在嘗試獲取json數組時遇到了類似的問題。我必須將dataType: 'json'添加到我的ajax中,以便非Firefox瀏覽器知道我的數據類型是什麼。例如:當在Firefox螢火跑

$.ajax({ 
    type: 'Get', 
    url: "http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo", 
    success: function(data){ 
     var jsonArray = jQuery.parseJSON(data); 
     alert(jsonArray.status.message); 
    } 
}); 

$.ajax({ 
    type: 'Get', 
    url: "http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo", 
    dataType: 'json', 
    success: function(data){ 
     var jsonArray = data; 
     alert(jsonArray.status.message); 
    } 
}); 

會顯示同樣的事情。但是,當你在Chrome DevTools中運行它時,它只能在最底層。我希望這能解決你的問題。