前提交代:
获取 表单FROM所有的元素可以采用var a = $('#form_id').serializeArray() 进行获取;
var form_data = $.serializeArray() 获取的数据以对象结构返回,如:
- { [‘name’='a', 'value'='1'], [‘name’='b', 'value'='2'] }
注意:$.serializeArray() 会过滤掉 被禁用的 元素
form_data 对象用 $.each 进行分解
- var m = [];
- $.each(x, function(i, field){
- m.push('"' + field.name + '":"' + encodeURI(field.value) + '"');
- });
HTML
- <form name="test" id="F_id">
- <input name="a" value="1">
- <input name="b" value="2">
- </form
- // 取得指定FORM里的元素
- var x = $('#F_id').serializeArray(),
- var m = [], idata;
- // 按 AJAX数据格式归入数组,方便后面的数据打包
- $.each(x, function(i, field){
- // 由于会出现"双引号字符会导致接下来的数据打包失败,故此对元素内容进行encodeURI编码
- // 后台PHP采用urldecode()函数还原数据
- m.push('"' + field.name + '":"' + encodeURI(field.value) + '"');
- });
- idata ='{' + m.join(',') + '}';
- // 按字符 idata 转换成 JSON 格式
- idata = eval('(' +idata+ ')');
- $.getJSON(url, idata, function(data){
- /* 处理 ajax 返回结果,这个根据自己的需要编写 */
- });
2017-07-01 添加另一个方式,比较效率:(原来还有个JSON可以直接处理的)
- var params = $("#F_id").serializeArray();
- var values = {};
- for( x in params ){
- values[params[x].name] = params[x].value;
- }
- var idata = JSON.stringify(values)
- );