将表单序列化为json

时间:2017-08-07 10:54:09

标签: javascript php arrays json

我有一个包含多个字段的表单,帖子输出如下:

Array(
[query] => Array
    (

        [categories] => Array
            (
                [0] => 344
                [1] => 64
            ),
        [ages] => Array
            (
                [0] => 23
                [1] => 10
            )

    )

[post_type] => product
[section] => my_section
[action] => my_action
[page] => 1
)

所以我想通过具有类似json结构的ajax发送表单,但是当serialiasing我的表单和json.stringify结果时,我得到了不同的结构,这将不适用于我的搜索引擎类:

var datas = my_form.serializeArray();
console.log(JSON.stringify(datas));

/// OUTPUT
var j = [{  
      "name":"query[categories][]",
      "value":"344"
   },
   {  
      "name":"query[categories][]",
      "value":"64"
  },
   {  
      "name":"query[ages][]",
      "value":"23"
  } ....

对于json我需要以下结构:

{  "query":{  
  "categories":[  
     "344",
     "64"
  ]},
    "post_type":"product",
    "section":"my_section",
    "action":"my_action",
    "page":"1"
}

是否可以从表单中"flat" the json获得良好的结构?还是有任何解决方案?我真的需要良好的结构。

谢谢

1 个答案:

答案 0 :(得分:0)

$.ajax({
            type: $(form).attr('method'),
            url: $(form).attr('action'),
            data: $(form).serialize(),
            dataType: 'json',
            success: function (data) {

            },
            error: function (xhr, ajaxOptions, thrownError) {

            }
        });