2012-12-01 83 views
3

以下是腳本。它在所有其他瀏覽器中工作正常,所以我認爲這是一個緩存問題,但不是真的。我幾個小時一直在敲我的頭,沒有任何工作。Ajax無法在IE中加載

$.ajaxSetup({ 
    cache: false 
}); 

$("#send").live('click', function() { 
    console.log("AAAAA"); 
    $("#loader").show(); 
    $form = $('#reservationForm'); 

    $inputs = $form.find('input[name^="entry"]'), 
    serializedData = $('#reservationForm :input[name^="entry"]').serialize(); 

    console.log(serializedData); 
    serializedData += "&pageNumber=0&backupCache=1&submit=Submit"; 

    // fire off the request to /form.php 
    $.ajax({ 
     url: "https://docs.google.com/spreadsheet/formResponse?formkey=d", 
     // url: "https://docs.google.com/spreadsheet/formResponse?formkey=d;ifq", 
     type: "post", 
     data: serializedData, 
     // callback handler that will be called on success 
     success: function (response, textStatus, jqXHR) { 
      // log a message to the console 
      console.log("Hooray, it worked!"); 
      $("#loader").hide(); 
      document.getElementById('error<?php echo"$uname";?>').innerHTML = error; 
      $("#success").fadeIn(); 
      setTimeout(function() { 
       $("#success").fadeOut(); 
      }, 5000); 
     }, 
     // callback handler that will be called on error 
     error: function (jqXHR, textStatus, errorThrown) { 
      // log the error to the console 
      console.log("The following error occured: " + textStatus, errorThrown); 
      alert('Due to an unknown error, your form was not submitted, please resubmit it or try later.'); 
     }, 
     // callback handler that will be called on completion 
     // which means, either on success or error 
     complete: function() { 
      // enable the inputs 
      $inputs.removeAttr("disabled"); 
     } 
    }); 

    // prevent default posting of form 
    event.preventDefault(); 

}); 
+0

我已經爲您的javascript讀取和刪除missplaced「 – GottZ

+0

可以考慮嘗試代碼我編輯的方式 – GottZ

+0

,你可以發佈你的HTML代碼 – mikipero

回答

2

console.log在IE中打開Developer Tools(F12打開)後可用。嘗試將其打開或在代碼中使用警報。 或使用try catch;

try{ 
    console.log('worked') 
} 
catch(err){ 
} 

,你可能要檢查,如果你的事件變量是不確定的:

event= event || window.event; 
event.preventDefault(); 
+1

是的,'console.log'在IE中打破了你的javascript。另一種選擇是使用類似H5BP中的腳本(https://github.com/h5bp/html5-boilerplate/blob/master/js/plugins.js ),它定義了瀏覽器中沒有作爲noop的方法,因此不會導致錯誤。 – ultranaut

+0

有關如何使用插件js的一個小例子將非常有用。 – emuigai

0

在你是不是在處理程序中添加「事件」的聲明劇本的開頭:

$("#send").live('click', function() { 

應該是:

$("#send").live('click', function (e) { 

,並在腳本的末尾沒有爲變量事件的引用:

// prevent default posting of form 
event.preventDefault(); 

我認爲,IE瀏覽器不具有全局事件對象「preventDefualt」功能(你所引用):這函數被添加到由jQuery傳遞的「e」事件對象。無論如何,在所有其他瀏覽器中,「事件未定義」都會失敗。試試這個太:

// prevent default posting of form 
e.preventDefault(); 

附加的註釋:jQuery開發團隊目前不鼓勵使用「實時」事件綁定功能,而是使用了「上」功能的等價形式。

0

IE不理解ajax中響應的內容類型。所以把你的dataType值放在請求中,它應該工作。例如對於例如 -

dataType: ($.browser.msie) ? "text" : "xml"