jQuery的serialize方法无法获取form数据

长期以来,我一直以为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的完整性,当然了这也是我自己瞎分析的。这里写出来防止大家再犯同样的错误,这种错误有时候会让人莫名其妙,如果不知道这个岔,解决起来也会浪费时间。

时间: 2024-10-11 16:01:08

jQuery的serialize方法无法获取form数据的相关文章

2016 系统设计第一期 (档案一)jQuery ajax serialize()方法form提交数据

jQuery ajax serialize()方法form提交数据,有个很奇怪的问题,好像不能取到隐藏控件的值. //点击提交按钮保存数据 $('#btn_submitUser').click(function () { var UserId = $('#UserId').val(); if (UserId == "") { $.ajax({ type: "POST", url: '/Users/Create/', data: $("#SaveUserFo

jQuery ajax - serialize() 方法

jQuery ajax - serialize() 方法 jQuery Ajax 参考手册 实例 输出序列化表单值的结果: $("button").click(function(){   $("div").text($("form").serialize()); }); 亲自试一试 定义和用法 serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. 您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 fo

关于jquery的serialize方法转换空格为+号的解决方法

jquery的 serialize()方法,可以对表单项进行序列化,这本来是很方便的一个功能:但是实际使用中去发现了如下问题:例如:< textarea name="content">abc 123 <  /  textarea >那么在执行 serialize()方法后,得到的却是  abc+123  这样的字符串:即jquery的序列化方法对空格进行了转义,转换成了 + 号.jquery中serialize方法的部分代码如下所示://............

ajax显示表格详情与添加数据(jQuery ajax - serialize() 方法)

0.表格样式 1.显示详情 第一种方法:利用表格的基本数据与从数据库中获取结合. 主要代码: <c:if test="${danger.dangerstatus eq '已整改'}"> <!-- 变活, 1 :隐患id ,1 :跟踪id --> <a href="javascript:void(0)" onClick="el_setFour(this,${danger.dangerid},${danger.followid }

jQuery ajax - serialize() 方法-输出序列化表单值

定义和用法 serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. 您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身. 序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中. 语法 $(selector).serialize() <html> <head> <script type="text/javascript" src="/jquery/jquery.js"

jQuery中用attr()方法来获取和设置特性

开始也逐步用C++替代.NET开发了.公司的业务剩下使用.NET开发的项目已经不是很多,掰着指头就可以数得过来,目前还有财经/行政/HR/财付通/互娱一些运营系统还是使用.NET开发.如果只能部署在Windows平台上,这些系统迟早要被替换掉.因此,我在做腾讯OA基础服务TOF的维护的同时,业余时间在研究Mono跨平台开发,通过博客,微搏宣传Mono项目,并在实践中进行实践. 最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求——国际化&本地化.熟悉的是之前的项目也玩过,陌

IT忍者神龟之jQuery 使用 $.getJSON() 跨域获取 JSON 数据

假设在服务器上有文件 http://test.unmi.cc/json.php 文件,它的内容为: [代码 1] 01 02 03 04 05 06 07 08 09 10 <?php header('Content-type: application/json'); $user = array (     "name"  => "Unmi",     "blog" => "http://unmi.cc" )

jQuery $.ajax跨域-JSONP获取JSON数据(转载)

Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序. 不过,由于受到浏览器的限制,该

jQuery使用ajax()方法加载服务器数据

使用ajaxSetup()方法可以设置Ajax请求的一些全局性选项值,设置完成后,后面的Ajax请求将不需要再添加这些选项值,它的调用格式为: jQuery.ajaxSetup([options])或$.ajaxSetup([options]) 可选项options参数为一个对象,通过该对象设置Ajax请求时的全局选项值. 例如,先调用ajaxSetup()方法设置全局的Ajax选项值,再点击两个按钮,分别使用ajax()方法请求不同的服务器数据,并将数据内容显示在页面,如下图所示: 在浏览器中