将数据$(form).serialize()和数组一起发布

时间:2019-07-02 21:36:32

标签: javascript jquery ajax

我无法通过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}, ...];

3 个答案:

答案 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