我正在使用jquery form plugin使用jquery ajax来完成大部分工作。我们有jquery 1.7.2
我们正在使用它通过ajax将表单发送到服务器,并返回指示成功的值或返回带有验证错误的表单。
我在firefox和chrome中工作时,如果在验证中发现错误,则包含旧表单的div的内容将替换为具有错误的新表单。
。$( '#FormDiv')空()的HTML(响应);
响应将如下所示:
<form action="/MyForm/Edit" id="MyForm" method="post"><input id="Id" name="Id" type="hidden" value="" />
<input id="PlantId" name="PlantId" type="hidden" value="1" />
<table>
<tr><td class="field">
ID
</td>
<td>
<input class="required" id="MyId" name="MyName" type="text" value="JP001" />
</td>
<td class="field">Description</td>
<td><input class="required" id="Description" name="Description" type="text" value="" />
</tr>
<tr>
<td class="field">Created by</td>
<td>Joe Bloggs</td>
<td class="field">Create date</td>
<td>15/06/2012</td>
</tr>
</table>
</form>
在IE中调试我可以看到ajax调用实际上在它的返回体中有这个但是我的方法的参数是删除外部表单的开始和结束标记,所以基本上它只是一个表。
我尝试了一些不同的东西来尝试解决这个问题,包括将processData设置为false(不确定这是否真的会影响它)并将returnType设置为“text”和“html”,但没有一个真正有用。< / p>
有什么想法吗?
所以事实证明,如果我将表格包装在一个div中,一切似乎都运行正常,不太确定那里有什么,如果有人能够解释这个,他们可以得到答案
答案 0 :(得分:2)
这不是一个jQuery错误。
这是一个不太知名的Javascript“功能”
显然,FF3和IE6 +(以及其他人)中的innerHTML不喜欢表单标签作为 innerHTML 的一部分。如果需要,可以测试一下:
<div id="test">
<form>
<input>
</form>
</div>
<script>
window.onload=document.getElementById('test').innerHTML = "<form><input type="hidden" name="blah"></form>";
</script>
Result:
<div id="test">
<input type="hidden" name="blah">
</div>
不太清楚为什么,但 他们 实现它的方式。