Ajax调用后,IE和FF中的DOM损坏

时间:2010-09-22 09:03:41

标签: jquery ajax grails

我在执行ajax callM时遇到了IE和FF的奇怪行为; Chrome按预期工作;)

在Grails中,我使用<g:formRemote/>标签,结果如下:

<form onsubmit="jQuery.ajax({type:'POST',
                             data:jQuery(this).serialize(),
                             url:'/url/morUrl',
                             success:function(data,textStatus){},
                             error:function(XMLHttpRequest,textStatus,errorThrown){}
                             complete:function(XMLHttpRequest,textStatus){performAction(XMLHttpRequest)}
                            });return false" 
      method="POST" 
      action="/url/morUrl" 
      name="tmpForm" 
      asynchronous="false" 
      id="tmpForm">`

所有测试的浏览器中,ajac调用完成并且到达了complete:function(XMLHttpRequest,textStatus){performAction(XMLHttpRequest)}回调,该回调也表现良好。 在那之后,只有FF和IE做了一些奇怪的事情,只用一个简单的“false”作为内容跳过整个DOM Modell。

我发现,附加到Ajax Call return false的{​​{1}}是导致此行为的原因。

<form onsubmit="jQuery.ajax({ ... ... });**return false**"出现在我的所有ajax调用中,但只有在这里才会导致这个freekin结果.ajax调用返回一些带有一些新HTML的JSON,其中用于替换{{}中的div层。 1}}回调。

任何想法为什么IE和FF都在做这件奇怪的事情?

有没有人有类似的问题?和/或工作解决方案?

问候,

亚历

1 个答案:

答案 0 :(得分:0)

事实证明,提交表单的链接实际上是使用href=javascript:tmpForm.onsubmit();表示法。

IE和FF接受字符串“javascript:tmpForm.onsubmit();”作为新文档URl并验证它(将结果作为新内容发布),而Chrome刚刚执行了JS ....

似乎是我的失败;)