使用AJAX提交表单参数的各种方式表单如下:
<form id='form1'>
<input type='checkbox' name='hobby' value='0'>
<input type='checkbox' name='hobby' value='1'>
<input type='checkbox' name='hobby' value='2'>
<input type='radio' name='gender' value='0' checked='checked'>
<input type='radio' name='gender' value='1'>
<input type='uname' name='uname'>
<select name='age'>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
<option value='13'>13</option>
</select>
</form>
方式1:
数据为文本类型文本: “UNAME =艾丽斯&mobileIpt = 110&生日= 1983年5月12日”
方式2:
数据为json对象。{uanme:'vic',mobileIpt:'110',生日:'2013-11-11'}
方式3:
数据为JSON数组。
[
{"name":"uname","value":"alice"},
{"name":"mobileIpt","value":"110"},
{"name":"birthday","value":"2012-11-11"}
]
方式4:
JSON字符串,形如
{“name”:“uname”,“age”:18}
注意,这个地方不是JSON对象,是JSON字符串,字符串。这样,在后台就可以直接注入到对象中。
当你需要向后台提交一组对象时时,JSON字符串的好处就体现出来了(对象数组)。
一般都是用交的方法传递参数。
写法:
$.ajax({
type: 'post',
url: 'aaa/bbb.do',
contentType: 'application/json;charset=utf-8',
data: '{"name": "uname", "age": 18}',
success: function (data) { //返回json结果
alert(data);
}
});
方式5:
把参数拼接在URL中,data属性设为空{ }
function getFormInfo(){
var name='wen';
var user='chen';
$.ajax({
url: "/login/authenticate?name="+name+"&user="+user,
type: "POST",
data:{},
dataType: "json",
success: function(data){
},
error:function(err){
console.log(err.statusText);
console.log('异常');
}
});
}
方式6:
根据表单id属性,把表单封装数据,调用JQuery的serialize()方法序列化为字符串。
前提是:发送请求的必须是一个form表单,而且表单内要做参数的标签必须具有name属性,因为name属性会被认为请求参数名
//代码如下
function getFormInfo(){
var params=$('#login').serialize(); //把id为login的form表单里的参数自动封装为参数传递
console.log(params);
$.ajax({
url: "http://192.168.10.32:6833/login/authenticate",
type: "POST",
data:params,
cache:false,
dataType: "json",
success: function(data){
},
error:function(err){
}
});
}
方式7:
拼接data。
function getFormInfo(){
var name='chen';
var user='wen';
$.ajax({
url: "http://192.168.10.32:6833/login/authenticate",
type: "POST",
data:'name='+name+'&user='+user,
cache:false,
dataType: "json",
success: function(data){
},
error:function(err){
}
});
}
方式8:
表单序列化为json数据。 需要引入:<
script
type="text/javascript" src="serializeJSON.js"></
script
>
function getFormInfo(){
var params=$('#login').serializeJSON();
console.log(params);
$.ajax({
url: "http://192.168.10.32:6833/login/authenticate",
type: "POST",
data:params,
cache:false,
dataType: "json",
success: function(data){
},
error:function(err){
}
});
}
方式9:
表单序列化为json数据,既有全部直接获取表单中的数据又有单独出来的数据。
function getFormInfo(){
var params=$('#login').serializeJSON();
console.log(params);
params.height='20'; //附加json元素
$.ajax({
url: "http://192.168.10.32:6833/login/authenticate",
type: "POST",
data:params,
cache:false,
dataType: "json",
success: function(data){
},
error:function(err){
}
});
}
实例:
假如现在有这样一个表单,是添加元素用的。
<form id='addForm' action='UserAdd.action' type='post'>
<label for='uname'>用户名</label>:<input type='text' name='uname' id='uname'><br>
<label for='mobileIpt'>手机号:</label><input type='text' name='mobileIpt' id='mobileIpt'><br>
<label for='birthday'>生日:</label><input type='text' name='birthday'><br>
<input type='button' value='提交' onclick='addUser()'>
</form>
基本的实现方式--json对象
function addUser(){
var user = {
uname:$("#uname").val(),
mobileIpt:$("#mobileIpt").val(),
birthday:$("#birthday").val()
};
$.ajax({
url:'UserAdd.action',
data:user,
type:'post',
dataType:'text',
success:function(msg){
if(msg=='1'){
console.log('添加成功');
}else{
console.log('添加失败')
}
}
})
}
另一种处理方式--jquery的serializeArray方法
序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据。
注意,此方法返回的是JSON对象而非JSON字符串。需要使用插件或者第三方库进行字符串化操作。
返回的JSON对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对——name参数和value参数(如果value不为空的话)。
使用方法测试
$('#addForm').serializeArray();
//返回数据结构,是json数组,每个对像分别name和value为key,代表这个表单元素的name和value
[
{"name":"uname","value":""},
{"name":"mobileIpt","value":""},
{"name":"birthday","value":""}
]
使用JQuery.param()方法处理一下
var arr = $('#addForm').serializeArray();
$.param(arr);
"uname=alice&mobileIpt=110&birthday=1983-05-12"
这样就转成文本的形式进行传输了。