前提交代:


    获取 表单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 method="post" id="F_id" enctype="multipart/form-data">

    < input type="file" id="ar_img" name="ar_img" accept="image/*" >
    < textarea id="ar_content" name="ar_content" style="width:100%;height:300px;">

    < / 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)

    );

    注:


    //processData: false,  // 告诉jQuery不要去处理发送的数据,注:使用serializeArray(),要设置为true 
    //contentType: false,   // 告诉jQuery不要去设置Content-Type请求头,注:serialize(),要设置为true