jQuery Ajax:serialize()方法
主要参考:
《锋利的jQuery》单东林、张晓菲、魏然
www.3cschool.com.cn之《jQuery 参考手册 - Ajax》
搜集整理:sagahu@163.com
简单示例
输出序列化表单值的结果:
$("button").click(function(){
$("div").text($("form").serialize());
});
定义
serialize() 方法将表单元素的名称和值序列化为URL 编码文本字符串。返回值类似于:'single=1&multiple=2'。
您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身。
序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中。
语法
. serialize ()
参数 |
说明 |
无参数 |
|
返回值 |
jQuery |
详细说明
serialize() 方法创建以标准 URL 编码表示的文本字符串。它的操作对象是代表表单元素集合的 jQuery 对象。
表单元素有几种类型:
<form>
<div><input type="text" name="a" value="1" id="a" /></div>
<div><input type="text" name="b" value="2" id="b" /></div>
<div><input type="hidden" name="c" value="3" id="c" /></div>
<div>
<textarea name="d" rows="8" cols="40">4</textarea>
</div>
<div><select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select></div>
<div>
<input type="checkbox" name="f" value="8" id="f" />
</div>
<div>
<input type="submit" name="g" value="Submit" id="g" />
</div>
</form>
.serialize() 方法可以操作已选取个别表单元素的 jQuery 对象,比如 <input>, <textarea> 以及 <select>。不过,选择 <form> 标签本身进行序列化一般更容易些:
$('form').submit(function() {
alert($(this).serialize());
return false;
});
输出标准的查询字符串:
a=1&b=2&c=3&d=4&e=5
注释:只会将”成功的控件“序列化为字符串。如果不使用按钮来提交表单,则不对提交按钮的值序列化。如果要表单元素的值包含到序列字符串中,元素必须使用 name 属性。
序列化的好处
下面这段代码,将表单字段的值逐个添加到$.get()方法的data参数中:
$("#send").click(function(){
$.get("get1.php", {
username: $("#username").val(),
content: $("content").val()
}, function(data, textStatus){
$("#resText").html(data); // 将返回数据添加到页面上
}
);
});
这种方式在只有少量字段的表单中,勉强还可以使用,但如果表单元素越来越复杂,使用这种方式在增加大量工作的同时也使得表单缺乏弹性。而使用serialize()方法,可以方便地将DOM元素内容序列化为字符串,用于Ajax请求。把上面代码修改如下:
$("#send").click(function(){
$.get("get1.php", $("#form1").serialize(),
function(data, textStatus){
$("#resText").html(data); // 将返回数据添加到页面上
}
);
});
即使在表单中再增加新字段,脚本仍然能够使用,并且不需要作其它多余的工作。
需要注意,$.get()方法中data参数不仅可以使用映射方式,如下代码:
{
username: $("#username").val(),
content: $("content").val()
}
也可以使用字符串方式,代码如下:
"username="+encodeURIComponent($('#username').val())
+"&content="+encodeURIComponent($('#content').val())
使用字符串方式时,需要注意对字符编码(中文问题),如果不希望编码带来麻烦,可以使用serialize()方法,它会自动编码。
因为serialize()方法作用于jQuery对象,所以不光只有表单能够使用它,其它选择器选取的元素也能够使用它。
$(":checkbox,:radio").serialize(); // 把复选框和单选框的值序列化为字符串,只会将选中的值序列化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述