本文共 4204 字,大约阅读时间需要 14 分钟。
使用AJAX提交表单参数的各种方式表单如下:
方式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){ } }); }
实例:
假如现在有这样一个表单,是添加元素用的。
基本的实现方式--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"
这样就转成文本的形式进行传输了。
转载地址:http://ixnws.baihongyu.com/