2017-08-07 70 views
-2

我有多个字段的表单,后输出是这样的:序列化形式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 
) 

所以我想发送的形式throught AJAX类似json的结构,但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获得良好的结构?或者有没有解决办法?我真的需要好的结构。

谢谢

+0

不要序列呢? serialize函数使得您可以将参数作为URL参数传递。 – Danmoreng

+0

您好,感谢您的回复,但我不明白你的意思,我真的想从ajax发送表单并传递上面的json结构的数据。 – user44321

回答

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

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

      } 
     }); 
+0

使用此方法可以在发布后发送json数据。 –