1、serialize() 方法:
  serialize() 方法通过序列化表单值,创建 URL 编码文本字符串

  您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身。

  序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中,这样在ajax提交表单数据时,就不用一一列举每一个参数,只需将data参数设置为:$("form").serialize()即可。

//语法
$(selector).serialize()

  输出标准的查询字符串:a=1&b=2&c=3&d=4&e=5

  注释:只会将“成功的控件”序列化为字符串。(即指没被禁用的元素)如果不使用按钮来提交表单,则不对提交按钮的值序列化。如果要表单元素的值包含到序列字符串中,元素必须使用 name 属性。

2、serializeArray() 方法:
  serializeArray() 方法通过序列化表单值来创建对象数组(名称和值)
  您可以选择一个或多个表单元素(比如 input 及/或 textarea),或者 form 元素本身。
//格式:
var jsonData = $("form").serializeArray();
  注意:此方法返回的是 JSON 对象而非 JSON 字符串

  返回的 JSON 对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对 —— name 参数和 value 参数(如果 value 不为空的话)。举例来说:
[
{name: 'firstname', value: 'Hello'},
{name: 'lastname', value: 'World'},
{name: 'alias'}, // 值为空
]
  特别说明,元素不能被禁用(禁用的元素不会被包括在内),并且元素应当有含有 name 属性。提交按钮的值也不会被序列化。文件选择元素的数据也不会被序列化。
  注意:1、不被禁用;2、包含name属性
3、高级搜索实例:
  结构:

<div class="title-search advanced_search"><table><tr><td>
<div class="ui-filter">
<div class="ui-filter-text " >
<span><s:text name="cems.advancedSearch"></s:text></span>
</div>
<div class="ui-filter-list">
<form id="hForm" class="form">
<table class="form">
<tr>
<td class="formTitle"><s:text name="sys.column.name.unRegDevice.name"></s:text></td>
<td class="formValue" colspan="">
<input id="unRegDevice_hostName" name="queryBean.hostName" type="text" class="form-control" placeholder='<s:text name="sys.column.name.unRegDevice.name"/>' />
</td>
<td class="formTitle"><s:text name="sys.column.name.unRegDevice.ip"></s:text></td>
<td class="formValue" colspan="">
<input id="unRegDevice_ip" name="queryBean.ip" type="text" class="form-control" placeholder='<s:text name="sys.column.name.unRegDevice.ip"></s:text>' data-mask="" data-inputmask="'alias': 'ip'" isvalid="yes" />
</td>
</tr>
<tr>
<td class="formTitle"><s:text name="sys.column.name.unRegDevice.groupName"></s:text></td>
<td class="formValue" colspan="">
<input id="unRegDevice_groupName" name="queryBean.groupName" type="text" class="form-control" placeholder='<s:text name="sys.column.name.unRegDevice.groupName"></s:text>' />
</td>
<td class="formTitle"><s:text name="sys.column.name.unRegDevice.mac"></s:text></td>
<td class="formValue" colspan="">
<input id="unRegDevice_mac" name="queryBean.mac" type="text" class="form-control" placeholder='<s:text name="sys.column.name.unRegDevice.mac"></s:text>' isvalid="yes" />
</td>
</tr>
<tr>
<td class="formTitle"><s:text name="sys.column.name.unRegDevice.updateTime"></s:text></td>
<td class="formValue" colspan="">
<input id="Category" type="hidden" value="" />
<div style="float: left; width: 45%;">
<input id="StartTime" name="queryBean.updateBeginTime" readonly type="text" class="form-control input-wdatepicker" onclick="WdatePicker()" onfocus="WdatePicker()">
</div>
</td>
<td class="formTitle">至</td>
<td class="formValue" colspan="">
<div style="width:130px;">
<input id="EndTime" name="queryBean.updateEndTime" readonly type="text" class="form-control input-wdatepicker" onclick="WdatePicker()" onfocus="WdatePicker()">
</div>
</td>
</tr>
<tr>
<td class="formTitle"><s:text name="sys.column.name.unRegDevice.isOpened"></s:text></td>
<td class="formValue" colspan="">
<input type="radio" id="queryBean_isOpened" name="queryBean.isOpened" checked="checked" value="" ></input>&nbsp;<s:text name="sys.column.name.unRegDevice.noStart"/>
<input type="radio" id="queryBean_isOpened1" name="queryBean.isOpened" value="" ></input>&nbsp;<s:text name="sys.column.name.unRegDevice.start"/>
</td>
<td class="formTitle"><s:text name="sys.column.name.unRegDevice.protectState"></s:text></td>
<td class="formValue" colspan="">
<input type="radio" id="queryBean_protectState" checked="checked" name="queryBean.protectState" value="" ></input>&nbsp;<s:text name="sys.column.name.unRegDevice.noProtect"/>
<input type="radio" id="queryBean_protectState1" name="queryBean.protectState" value="" ></input>&nbsp;<s:text name="sys.column.name.unRegDevice.protect"/>
</td>
</tr>
<tr>
<td class="formTitle"><s:text name="sys.column.name.unRegDevice.isFireWall"></s:text></td>
<td class="formValue" colspan="">
<input type="radio" name="queryBean.isFireWall" checked="checked" value=""></input>&nbsp;<s:text name="sys.column.name.unRegDevice.noOpen"/>
<input type="radio" name="queryBean.isFireWall" value=""></input>&nbsp;<s:text name="sys.column.name.unRegDevice.open"/>
<input type="radio" name="queryBean.isFireWall" value=""></input>&nbsp;<s:text name="sys.column.name.unRegDevice.unknown"/>
</td>
</tr>
</table>
</form>
<div class="ui-filter-list-bottom">
<a id="btn_Reset" class="btn btn-default"><s:text name="cems.clear"></s:text></a>
<a id="highSearchButton" class="btn btn-primary"><s:text name="cems.ok"></s:text></a>
</div>
</div>
</div>
</td></tr></table></div>

  高级搜索执行:

/****高级搜索执行***/
$("#highSearchButton").bind("click",function(){
if($("#hForm").Validform()){
if (!$(".ui-filter-text").next('.ui-filter-list').is(":hidden")) {
$(".ui-filter-text").trigger("click");
}
$gridTable.jqGrid('setGridParam', {
postData: serializeObject($("#hForm")), page: 1
}).trigger('reloadGrid');
}
});

  序列号表单数据:

/**
*序列化form表单
*@param 要序列化的表单的名称
*@return 返回对象
***/
function serializeObject(form){
var o = {};
form.find(".ui-select").each(function(r){
var name=$(this).attr("name");
var value=$(this).attr("data-value");
o[name]= value;
}) $.each(form.serializeArray(),function(index){
if(o[this['name']]){
o[this['name']] = o[this['name']] + ","+this['value'];
}else{
o[this['name']] = this['value'];
}
});
return o;
}

  form.serializeArray():通过序列化表单值来创建对象数组(名称和值);

  index:代表该对象数组的索引

  然后java action层:

public class UnRegDeviceAction extends BaseActionImpl {
……
//页面queryBean对象
private UnRegDeviceQueryBean queryBean;
//get/set方法
public UnRegDeviceQueryBean getQueryBean() {
return queryBean;
}
public void setQueryBean(UnRegDeviceQueryBean queryBean) {
this.queryBean = queryBean;
}
……
}

  数据列表查询:

   /**
* 数据列表查询
*/
public void getDeviceJson(){
log.info("未注册设备数据列表查询-ST");
Page<UnRegDevice> page = null;
List<UnRegDevice> dataList = null;
//拼排序条件。
log.info("拼排序条件-ST");
String orderStr = getRequest().getParameter("order");
String sortStr= getRequest().getParameter("sort");
if(queryBean == null){
queryBean = new UnRegDeviceQueryBean();
}
if(sortStr != null && orderStr != null){
String[] orderArr = orderStr.split(",");
String[] sortArr = sortStr.split(",");
for(int i=;i<sortArr.length;i++){
queryBean.addOrderProperty("this."+sortArr[i], "asc".equals(orderArr[i]) ? Order.ASC : Order.DESC);
}
}log.info("拼排序条件-END"); //---------------------------------数据过滤ST
log.info("数据过滤-ST");
@SuppressWarnings("unchecked")
Map<String, List<String>> mgrOrgMap = (Map<String, List<String>>) getSession().getAttribute(OrganizationUtil.ORG_MGR);
if(OrganizationUtil.isNullMgrOrg(mgrOrgMap)){
dataList = new ArrayList<UnRegDevice>();
}else{
Organization mgrOrg = new Organization();
mgrOrg.setMgrOrg(mgrOrgMap);
queryBean.setOrganization(mgrOrg);
page
= unRegDeviceService.query(queryBean, getCurrentPageNo(), getPageSize());
dataList = page.getDataList();
}
log.info("数据过滤-END");
//---------------------------------数据过滤END JsonConfigEx jsonConfigEx = new JsonConfigEx();
jsonConfigEx.addPropertyIncludes("organization","name");
jsonConfigEx.setIgoreHibernateLazyLoadProperty(false);
String json = JsonUtils.collection2Json(dataList,jsonConfigEx);
/*** 组装成grirdJson格式 ***/
int total = ;
if (page != null) {
String ob = getSession().getAttribute("selectStyle").toString();
if("".equals(ob)){
total = page.getTotalDataCount();
}else{
total = page.getTotalPageCount(); }
}
String girdJson = EasyUIGridUtils.toGridJson(total, json);
print(girdJson);
log.info("未注册设备数据列表查询-END-数据格式:"+girdJson );
}

  可以看到上面的queryBean查询条件:

  (1)当未高级搜索时,queryBean 为 null。

  (2)高级搜索时,queryBean 为传过来的值。

  bean内容

package com.vrv.cems.assets.bean; 

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List; import com.sys.common.base.support.QueryObject;
import com.sys.common.base.support.Orderable.Order;
import com.sys.common.base.support.Orderable.OrderedProperty;
import com.vrv.cems.assets.domain.UnRegDevice; public class UnRegDeviceQueryBean extends UnRegDevice {
private static final long serialVersionUID = -8893630319158639345L;
private List<String> organizationIds = new ArrayList<String>(); //组织机构ID
//扫描数据入库开始时间
private Timestamp updateBeginTime;
private Timestamp updateEndTime;
private boolean orgIdIsEmpty;
public boolean isOrgIdIsEmpty() {
return orgIdIsEmpty;
}
public void setOrgIdIsEmpty(boolean orgIdIsEmpty) {
this.orgIdIsEmpty = orgIdIsEmpty;
}
private String organizationName;//组织名称
private String devType;//设备类型名称
public String getDevType() {
return devType;
}
public void setDevType(String devType) {
this.devType = devType;
}
private String conditions;
//扫描数据入库结束时间
/**
* 内部查询代理对象。
*/
private QueryObject queryObject = new QueryObject();
/**
* 获取排序规则对象
*/
public List<OrderedProperty> getOrderedProperties() {
return queryObject.getOrderedProperties();
}
public void addOrderProperty(String propertyName, Order order) {
queryObject.addOrderProperty(propertyName, order);
} public void addOrderProperty(String propertyName) {
queryObject.addOrderProperty(propertyName);
}
public Timestamp getUpdateBeginTime() {
return updateBeginTime;
}
public void setUpdateBeginTime(Timestamp updateBeginTime) {
this.updateBeginTime = updateBeginTime;
}
public Timestamp getUpdateEndTime() {
return updateEndTime;
}
public void setUpdateEndTime(Timestamp updateEndTime) {
this.updateEndTime = updateEndTime;
}
public List<String> getOrganizationIds()
{
return organizationIds;
}
public void setOrganizationIds(List<String> organizationIds)
{
this.organizationIds = organizationIds;
} public String getConditions() {
return conditions;
}
public void setConditions(String conditions) {
this.conditions = conditions;
} public String getOrganizationName() {
return organizationName;
}
public void setOrganizationName(String organizationName) {
this.organizationName = organizationName;
}
}

jQuery序列化表单数据 serialize()、serializeArray()及使用的更多相关文章

  1. jQuery 序列化表单数据 serialize() serializeArray()

    1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用 ...

  2. jQuery序列化表单 serialize() serializeArray()

    1.serialize()方法 描述:序列化表单内容为字符串,用于Ajax请求. 格式:var data = $(form).serialize(); 2.serializeArray()方法 描述: ...

  3. JQuery序列化表单serialize() 以及 serializeArray()

    都是利用form表单传递数据的 1.serialize()方法 描述:序列化表单内容为字符串,用于Ajax请求. 数据类似于这种: FirstName=Bill&LastName=Gates  ...

  4. jQuery序列化表单 serialize() serializeArray()(非常重要)

    https://m.2cto.com/kf/201412/361303.html 2014-12-15 1.serialize()方法 描述:序列化表单内容为字符串,用于Ajax请求. 格式:var ...

  5. jQuery 序列化表单 serialize() serializeArray()

    1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用 ...

  6. jquery序列化表单以及回调函数的使用

    在开发项目中.将前台的值传给后台,有时的JSP表单中的值有一两个,也有所有的值,假设这时一个个传,必然不是非常好的办法,所以使用jQuery提供的表单序列化方法,能够非常好的解决问题.同一时候能够封装 ...

  7. 关于Jquery 序列化表单的注意事项

    在JQuery 的serialize方法序列化表单的过程中,如果表单的name值最后有空格,会出现“+”号,查源码可见原因.这一小问题就浪费了半小时的时间,记录下来,备忘.

  8. javacript序列化表单数据

    在前端开发时,用到表单交互的比较多,在我们实现一些异步操作数据时,表单数据的序列化就显得尤为重要了.下面我们一起来看看如何进行序列化. 如,我们在进行提交表单时,地址栏里会显示这样的东东:name=z ...

  9. jQuery序列化表单为JSON对象

    <form id="myform"> <table> <tr> <td>姓名:</td> <td> < ...

随机推荐

  1. java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 解决办法

    一.背景 在Spark中,将DStream写入到MySQL出现错误:java.sql.SQLException: Access denied for user 'root'@'localhost' ( ...

  2. thinkphp5.0命名空间

    命名空间 ThinkPHP采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加高效的类库自动加载机制. 如果不清楚命名空间的基本概念, ...

  3. windows下重置mysql的root密码方法介绍(转)

    自己在内网操作的,遇到了一些的问题,其中一个是需要重置密码的,所以网上找了两篇文章,都有一些借鉴的地方. 版本mysql5.7.2,linux系统 除了参考文章还有几点说明: service mysq ...

  4. ubuntu下mysql的安装

    1.在终端输入 sudo apt-get install mysql-server mysql-client 2.在此安装过程中会让你输入root用户(管理MySQL数据库用户,非Linux系统用户) ...

  5. BZOJ 2428 JZYZOJ1533 : [HAOI2006]均分数据 模拟退火 随机化

    http://www.lydsy.com/JudgeOnline/problem.php?id=2428 http://172.20.6.3/Problem_Show.asp?id=1533 http ...

  6. 【贪心】【高精度】zoj3987 Numbers

    题意:给你一个数n,让你找m个非负整数,使得它们的和为n,并且按位或起来以后的值最小化.输出这个值. 从高位到低位枚举最终结果,假设当前是第i位,如果m*(2^i-1)<n的话,那么说明这一位如 ...

  7. 【BZOJ】3697: 采药人的路径

    3697: 采药人的路径 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1718  Solved: 602[Submit][Status][Discu ...

  8. 【原创】MySQL+MyEclipse+对象映射文件,schema与category的关系

    (一) 1.映射文件的类如下写法:class name="com.sanqing.po.SysUser" table="sys_user"  catalog=& ...

  9. uoj 66 新年的巧克力棒 数学

    #66. 新年的巧克力棒 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/66 Description 马上就要 ...

  10. Java容器-引用分类与部分Map用法

    目录 1.引用分类 2.了解WeakHashMap.IdentityHashMap.EnumMap 3.同步控制与只读设置 代码实现 1.引用分类(面试) 强引用(StrongReference):引 ...