2011-10-11 122 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:你有时打开开发者工具控制台吗?这将做到这一点。 ;) –