2010-09-25 128 views
1

我有以下代碼,用於從類ajax的窗體中使用ajax提交數據。這在Firefox,Safari和Chrome中完美工作,但在IE中失敗。IE8中的jquery ajax()調用失敗

ajax: function() { 
     $('form.ajax').live('submit', function() { 
     var form_ajax = $(this); 

     $.ajax({ 
      url: form_ajax.attr('action'), 
      data: form_ajax.serialize(), 
      type: form_ajax.attr('method'), 
      dataType: 'script', 
      beforeSend: function(xhr) { 

      $('#ajax-bid-new .ajax-form-error, #ajax-bid-new .ajax-form-success').remove(); 
      form_ajax.slideUp(); 

      } 
     }); 

     return false; 
     }); 

請幫忙 - 我在這裏呆了兩天。我從服務器返回一個JavaScript文件,以便在瀏覽器中進行評估。此功能在Firefox,Chrome和Safari中按預期工作,但IE將其作爲文件接收並打開文件下載對話框

如何在IE中完成此項工作?我試圖通過甚至寫了ajaxSetup塊像上面後,我application.js文件拖放以下代碼(我做一個Rails項目BTW)

// public/javascripts/application.js 
jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} 
}) 

我從IE瀏覽器相同的行爲。

回答

0

在IE中看起來像livedoesn't work with submit。您是否嘗試過使用正常提交,而不是:

$('form.ajax').submit(function() { 
+0

提交不工作..我是新來的JavaScript和JavaScript我ugess的請求異步正確地發送我的上面的代碼 - 只有當IE收到一個JS - 而不是評估JS,它正在渲染它 – Anand 2010-09-25 11:40:03

0

爲了趕上直播的形式提交事件IE,而不是:

$("form").live("submit", function() { ... }); 

var submitHandler = function() { ... }; 
$("body").children().each(function() { 
     $("form", this).live("submit", submitHandler); 
}) 

點要注意

  • IE緩存AJAX請求確實積極(比Firefox更重要)。如果這不適合您的網站,則需要在響應中正確設置Cache-Control標頭。

  • 更改您的內容類型,上次我通過更改application/json的內容類型來修復類似的問題;字符集= UTF8到只是簡單的應用程序/ JSON

  • jQueries' bind and live behaviours along with the liveQuery plugin