将嵌套的json对象与序列化表单一起发布

时间:2014-11-07 20:20:55

标签: jquery json

我有一个看起来像

的json字符串
[{"tagid":"1","name":"scandalous"},{"tagid":"4","name":"finance"}]

表单正在提交

序列化
var datastring=$(this).serializeArray();

我需要将json字符串作为tagsArray与表单一起发布,以便我可以将其作为

进行访问
$_POST['tagsArray'] then json decode it so it can be looped through.

帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

尝试使用JSON.stringify()

var data = JSON.stringify([{"tagid":"1","name":"scandalous"},
                           {"tagid":"4","name":"finance"}]);


$.ajax({  
  url: "/path/to/url",  
  type: "POST",  
  dataType: "json",  
  contentType: "json",  
  data: data,  
  success: function(){              
    alert("success :-)");  
  },  
  error: function(){  
    alert("fail :-(");  
  }  
});  

我写了一个使用JSON序列化表单的扩展:

$.extend({
    formSerializer: new function () {
        var _self = this;
        _self.jsonSerialize = function (form) {
            var _data = {};
            var _items = form.serializeArray();
            for (var i = 0; i < _items.length; i++)
                _data[_items[i].name] = _items[i].value;
            return _data;
        };
    },
});

拥有此扩展程序即可:

var form = $(this);
var data = $.formSerializer.jsonSerialize(form);

    data.anotherArray = [{"tagid":"1","name":"scandalous"},
                           {"tagid":"4","name":"finance"}];

$.ajax({  
  url: "/path/to/url",  
  type: "POST",  
  dataType: "json",  
  contentType: "json",  
  data: data,  
  success: function(){              
    alert("success :-)");  
  },  
  error: function(){  
    alert("fail :-(");  
  }  
});