2011-06-15 98 views
1

我的jQuery的下面的代码片段:

var AlertType = 
{ 
    Save: function() { 
     var model = $('#alert').serialize(); 
     $.post('/account/alert/edit', model); 
    } 
} 

AlertType.Save()被调用时,$.post()并不在IE浏览器,但在所有其他浏览器(右令人惊讶?)我试图研究这个问题,但它是一个相当广泛的类别或问题。我甚至在$.post()中放置了一个回调函数,并试图在回调中使用alert(),但它从未触及警报。

什么可能导致这种情况,修复程序会是什么?

+7

并不奇怪,IE是不是很高兴我们的开发人员:( – Gabriel 2011-06-15 17:46:55

+1

你收到任何错误 – lonesomeday 2011-06-15 17:47:12

+1

我已经试过?错误(函数(){alert('errors')})只是为了看看它是否有任何错误,但我什么都没收到。 – TheJediCowboy 2011-06-15 17:48:33

回答

6

在你的鞋我就拉下问题分解到其最小的块,然后从那里建立。

步骤1

确定AlertType.Save()被称为呢?把警报在:

var AlertType = 
     { 
      Save: function() { 
       alert('Save called.'); 
       var model = $('#alert').serialize(); 
       $.post('/account/alert/edit', model); 

      } 
     } 

步骤2

如果Save()被调用,尝试调用$.post()null,而不是模型。在Alert控制器中为Edit的操作方法的代码中放置一个断点。你想确保控制器代码被调用。

步骤3

如果控制器代码被调用,然后你有问题model。 (不知道从哪里拿到它,抱歉)。如果控制器代码仍未被调用,则请尝试直接呼叫$.post(),即不使用AlertType.Save()。因此,而不是:

AlertType.Save();

做实际的$。员额()。你想在这里消除它成为javascript对象的可能性。

也许上面的内容过于矫枉过正,但你只需要做一次这样的事情,如果它再次发生,你将会学到一些东西:)从经验来看,IE可以让你不得不绕过房屋来诊断问题,因为IE有时会在屏幕下做一些愚蠢的事情,其他的浏览器根本就不行。得爱IE。

0

根据我的经验,IE缓存比其他浏览器更积极。

尝试增加一个随机数到查询:

$.post('/account/alert/edit?r=' + (Math.random() * 999), model); 
0

它可能是浏览器上的安全策略。 IE是否阻止了XmlHttpRequest的使用,可能除了少数可信域以外的所有其他应用程序?

-1

尝试$.ajax对象,它在IE 8做工精细:

var ajaxobject = $.ajax(
{ 
    type:'POST', 
    url:'/account/alert/edit', 
    cache:false, 
    async:true, 
    global:false, 
    dataType:"html", 
    data:"model=" + $('#alert').serialize(), 
    timeout:10000, 
    success:function(recept) 
    { 
     alert('sucess !\nReceived data :\n' + recept); 
    }, 
    error:function() 
    { 
     alert('failed.'); 
    } 
}); 
if(ajaxobject == undefined) 
    alert('Ajax object creation failed'); 
相关问题