如果现在有这样的表单,它将用于添加元素。



用户名 uff1a
手机号码 uff1a
生日uff1a




我们不想以表单提交的形式添加这个元素,我们希望使用Ajax提交。

我们以前做过这个:


函数语句(){
var用户{ {
信息:$(# uname)。瓦迩(),
mobileipt:$(# mobileipt )瓦迩(),
生日:$(#生日)。瓦迩()
};
$ ajax({
网址:'useradd行动,
数据:用户,
类型:'post,
DataType:中,
成功:函数(MSG){
如果(味精= = 1){
console.log('add成功);
其他{ }
console.log('add失败)
}
}
})
}


这没什么不对的。获取表单元素的值真是太麻烦了。这里只有三个项目,很多项目都被放弃了。

直到有一天,我发现serializearray jQuery的方法

序列化表单元素(类似于'。连载()方法)返回JSON数据结构中的数据。

注意,该方法返回JSON对象而不是JSON字符串。您需要使用插件或第三方库进行字符串操作。

返回的JSON对象由一系列对象组成,每个对象包含一对或两对名对——name参数和value参数(如果值不是空的)。



让我们试试看。


$(#加入一个打印机窗体)。SerializeArray();
返回数据结构是一个JSON数组,名称和值分别对应于每一个类似的键,代表表单元素的名称和值。
{
{名字:uname
{名字:mobileipt
{name:生日
}


它似乎不能使用它。

我们用jquery.param()来处理它的方法。


var arr = $(#加入一个打印机窗体)。SerializeArray();
参数(ARR)美元;
uname = alicemobileipt = 110birthday = 1983-05-12


嘿,这符合我们的需求,虽然它不是JSON类型,但至少可以作为数据上传。

在这里我们可以填补这个JSON数组直接在Ajax数据和呼叫美元。参数在jQuery()。

让我们在jquery.param描述一下()方法:


返回值:StringjQuery.param(obj,{传统})
序列化表单元素或对象数组。
参数
obj,{传统}
根据名称值对序列化数组或jQuery对象,并根据键值对序列化普通对象。
是否传统:采用传统的浅序列化方式。
演示:
美元。参数({ uanme:'vic ',mobileipt:'110,生日:'2013-11-11});
uanme = vicmobileipt = 110birthday = 2013-11-11


看看这个解释,好像跟我们没什么关系。让我们换一个JSON数组。


美元。参数({ { uanme:'vic},{ mobileipt:'110},{生日:'2013-11-11} });
未定义=未定义=未定义


此转换没有成功,为什么我们的表单数据可以成功地转换为URL参数让我们看看jQuery的源代码。


在阿贾克斯 / /()方法,JSON型(美元。参数)的数据处理
如果s.processdata(数据类型的数据!=字符串){
数据= jquery.param(数据,传统);
}
在 / /参数的方法
如果(jquery.isarray(一)| |(a.jquery!JQuery.isPlainObject(一))){
表单元素 / / Serialize
jquery.each(一,函数(){(){
添加(this.name,这个值);
});
{人}
传统的 / /如果,将旧的方式(方式1.3.2以上
否则编码 / /没有),参数递归。
对于(前缀A){
buildparams(前缀,前缀一{ },传统,添加);
}
}


据了解,如果JSON数据,然后一个一个周期,只有拼接名称和值属性是它们的字符串。

如果它是一个公共对象,则对象的属性循环,然后字符串被拼接。

总结:

因此,本文要说的是,在jQuery的ajax函数中,可以传递3种类型的数据。

1。正文:uname = alicemobileipt = 110birthday = 1983-05-12

2.json对象:{ uanme:'vic ',mobileipt:'110,生日:'2013-11-11}

3.json阵列:


{
{名字:uname
{名字:mobileipt
{name:生日
}


所以,我们可以得到表单,并提交一个按钮,这是非常方便的。

补充:



事实上,提取表格数据的唯一方法是将()方法直接获取uname = alicemobileipt = 110birthday = 1983-05-12 。

ps中ajax方法中数据参数的使用综述


$ ajax({
类型:邮政,
网址:some.php,
数据:名称= johnlocation =波士顿,传递参数 / 第一路
数据::约翰,位置:波士顿
/ /数据:{ foo bar2 } }:{ bar1,转换to'foo = bar1foo = bar2
*
我们使用URL传递参数的第一种方式,如果用这个符号添加参数,参数可能不会被接收或不完整,
如果数据:名称= johnlocation =波士顿,如果名字的价值是约翰史密斯,它可能是一个问题,
我们可以用encodeURIComponent()里面的js方法逃避,
但是如果数据:{约翰,位置,波士顿}是用这种方式写的,它不需要被转义。
如果反过来,接收站点将是一个逸出字符串。
* /
成功:函数(MSG){
警报(保存的数据:+ MSG);
}
});