jQuery的serialize方法无法获取form数据
2015-01-30 14:37
495 查看
长期以来,我一直以为form表单是放数据的,table、tr、td是负责HTML页面显示布局的,他们之间不会互相影响。但是今天出现了这样的一个问题。同样的代码使用jQuery的serialize方法在IE8和IE9上执行是可以获取到form表单数据的,而在IE11上就不行。
经过多次试验、比较、测试发现是因为form标签和table交叉的原因。比如在以下的情况是执行失败的:
<table>
<form>
<tr>
<td>姓名</td>
<td><input name="name" type="text"/></td>
</tr>
</form>
</table>
而以下的方式是成功的:
<form>
<table>
<tr>
<td>姓名</td>
<td><input name="name" type="text"/></td>
</tr>
</table>
</form>
在网上也查了下资料,但是貌似没有讲的非常清晰的。但是可以肯定的是这是因为各个版本和类型的浏览器对HTML文档解析的规则是不同的,比如IE浏览器版本越高其HTML格式要求越严格。在以上情景中form和table实际上是一个层次的标签,而第一种方式似乎使用form割裂了table的完整性,当然了这也是我自己瞎分析的。这里写出来防止大家再犯同样的错误,这种错误有时候会让人莫名其妙,如果不知道这个岔,解决起来也会浪费时间。
经过多次试验、比较、测试发现是因为form标签和table交叉的原因。比如在以下的情况是执行失败的:
<table>
<form>
<tr>
<td>姓名</td>
<td><input name="name" type="text"/></td>
</tr>
</form>
</table>
而以下的方式是成功的:
<form>
<table>
<tr>
<td>姓名</td>
<td><input name="name" type="text"/></td>
</tr>
</table>
</form>
在网上也查了下资料,但是貌似没有讲的非常清晰的。但是可以肯定的是这是因为各个版本和类型的浏览器对HTML文档解析的规则是不同的,比如IE浏览器版本越高其HTML格式要求越严格。在以上情景中form和table实际上是一个层次的标签,而第一种方式似乎使用form割裂了table的完整性,当然了这也是我自己瞎分析的。这里写出来防止大家再犯同样的错误,这种错误有时候会让人莫名其妙,如果不知道这个岔,解决起来也会浪费时间。
相关文章推荐
- jQuery的serialize方法无法获取form数据
- 利用jQuery中的serialize方法大量获取页面中表单的数据,发送的服务器
- ajax使用serialize()方法后,数据无法封装并获取(PUT提交方式!)
- jquery的$('#theForm').serialize()获取表单数据,ajax传递到服务器中文乱码。
- jQuery基于ajax()使用serialize()提交form数据的方法
- 使用 jQuery.form.serialize() 获取表单数据后转成 json
- jQuery基于ajax()使用serialize()提交form数据的方法
- 将form表单里的数据封装成对象 json2.js的例子 jquery的serialize方法转换空格为+号的解决方法
- jQuery-serialize()输出序列化form表单值的方法
- MVC3控制器方法获取Form数据方法
- 数据容器Form方式获取值的方法(有些不放心)
- fckeditor jquery serialize 无法获取文本内容
- JQuery 获取json数据$.getJSON方法的实例代码
- JQuery 获取json数据[$.getJSON方法]
- JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及文件上传的部分
- 使用jquery.form.js的ajaxsubmit方法提交数据的Bug
- 【WEBAPI】关于WEBAPI无法获取数据的问题之一(Issues while making a POST to a Web API from JQuery)
- BitmapFactory类的decodeStream方法在网络超时或较慢的时候无法获取完整的数据
- JQuery以POST方法从ASP.NET服务器获取Json数据完整示例