我无法通过Ajax发送表单。除了用户填充的字段外,我还需要一起发送array
个对象。
AJAX POST:
submitHandler: function (form) {
$.ajax({
url: urlPost,
type: "POST",
dataType: "json",
data: $(form).serialize() + JSON.stringify(myArray),
success: function (resposta) {
alert('success');
}
});
}
如果我只发送$(form).serialize()
,我可以,但array
不能。
阵列:
myArray = [{name: 'a', node: 1}, {name: 'b', node: 12}, ...];
答案 0 :(得分:0)
将您的data: $(form).serialize() + JSON.stringify(myArray)
更改为data: $(form).serialize() + "&arr=" + JSON.stringify(myArray)
。如需更多帮助,请参考https://stackoverflow.com/a/10398820/4518930
答案 1 :(得分:0)
.serialize() + Some JSON String
没有任何意义。
根据文档:
https://api.jquery.com/serialize/
.serialize()方法以标准的URL编码创建文本字符串 符号。
因此,您实际上是在输入一个像foo=bar&goat=baz
这样的字符串,然后在其中添加一个JSON字符串。没道理。
我认为您最好自己将表单序列化为JSON对象。为数组添加另一个键,然后通过JSON.stringify
将该对象转储到JSON,并且该字符串是您的请求数据。
答案 2 :(得分:0)
在Cody Caughlan提出技巧之后,我创建了一个对象,该对象添加了表单和数组本身的所有属性。代码如下:
var dataForm = {};
$($(form).serializeArray()).each(function(index, obj){
dataForm[obj.name] = obj.value;
});
dataForm["MyArray"] = myArray;
还有ajax:post: dataForm
。