2010-09-22 62 views
1

我在执行ajax callM时遇到了IE和FF的奇怪行为; Chrome浏览器的预期为我)Ajax调用后IE和FF中的DOM损坏

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">` 

ALL测试的浏览器的AJAC呼叫做得好,达到了complete:function(XMLHttpRequest,textStatus){performAction(XMLHttpRequest)}回调这也表现良好。 之后,只有FF和IE做了一些奇怪的事情,并且跳过了整个DOM Modell,只剩下一个简单的“false”作为内容。

我想通了,return false追加到Ajax调用<form onsubmit="jQuery.ajax({ ... ... });**return false**"负责这种行为。

return false出现在我所有的ajax调用中,但只有在这里它会导致这个freekin结果。ajax调用返回一些JSON,其中有一些新的HTML用于替换performAction(XMLHttpRequest)回调中的div层。

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

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

问候,

亚历

回答

0

事实证明,其提交表单的链接被实际使用href=javascript:tmpForm.onsubmit();符号。

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

似乎是我的失败;)