2011-10-11 121 views
1

我有以下AJAX功能:IE AJAX跨瀏覽器的問題

function ajaxDesignerBrandInfo() 
{ 
    var D = wrapFormValues('#designer-brand-form'); 
    var recursiveEncoded = $.param(D); 
    /* 
    $.post("/api/designer_brand/", { data : recursiveEncoded }, function(data) 
    { 
     var results = $.parseJSON(data); 
     window.location = "/register/designer-product/"; 
    });*/ 

    $.ajax({ type: "POST", 
       url: "/api/designer_brand/", 
       data : { data : recursiveEncoded }, 
       success: function(data) { 
       console.log(data); 
       setTimeout(function() { 
       window.location = "/register/designer-product/"; 
      },0); 
       }, 
       error: function (xhr, ajaxOptions, thrownError){ 
           alert(xhr.status); 
           alert(thrownError); } 
     }); 

    return false; 

} 

以及相應的形式

<form id="designer-brand-form" name="form" method="post" action="" onSubmit="ajaxDesignerBrandInfo(); return false;"> 
.... 
</form> 

提交在Chrome,Safari和Firefox的偉大工程,動我

/註冊/ designer-product/

正確,但在IE9中,提交似乎爲

  1. 決不使它的服務器

  2. 清除表單和重定向回當前頁面我是上(在這種形式存在)。

我可以通過FireFox確認沒有javascript錯誤導致此失敗。有時它實際上有效,但我似乎無法總是以相同的方式重現此錯誤

有人請解釋WTF正在進行?

謝謝

+0

我添加了SetTimeout,因爲我讀到它可以解決我的問題,但它沒有實際上解決問題 – josephmisiti

回答

2

我相信你的問題是IE默默地拋出一個Javascript錯誤。僅僅因爲Firefox不會拋出JS錯誤,並不意味着IE不會。檢查IE中的JS錯誤(請參閱this linkthis one)。找到錯誤,你會找到解決方案。

此外,請嘗試Fiddler,這是一個獨立的Windows工具,充當代理服務器,並會完全告訴您您的AJAX流量是什麼樣子。

您的特定問題可能是console.log致電。這是一個Firebug的東西(Chrome支持)。我認爲IE不會,除非你採取步驟來添加它。請參閱:What happened to console.log in IE8?

+0

正確,console.log將拋出一個錯誤,除非您有專門打開的dev控制檯(F12)在IE –

+0

爲什麼它有時會起作用 – josephmisiti

+0

@Joseph Misiti:你有時打開開發者工具控制檯嗎?這將做到這一點。 ;) –