簡體   English   中英

將數據$(form).serialize()和數組一起發布

[英]Post data $(form).serialize() and an array together

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

將您的data: $(form).serialize() + JSON.stringify(myArray)更改為data: $(form).serialize() + "&arr=" + JSON.stringify(myArray) 有關更多幫助,請參閱https://stackoverflow.com/a/10398820/4518930

.serialize() + Some JSON String沒有意義。

根據文檔:

https://api.jquery.com/serialize/

.serialize()方法以標准的URL編碼表示法創建文本字符串。

因此,您實際上是在使用像foo=bar&goat=baz這樣的字符串,然后添加一個JSON字符串。 這沒有任何意義。

我認為您最好自己將表單序列化為JSON對象。 為您的數組添加另一個鍵,然后通過JSON.stringify將對象轉儲到JSON,並且該字符串是您的請求數據。

在Cody Caughlan提出技巧之后,我創建了一個對象,該對象添加了表單和數組本身的所有屬性。 代碼如下:

var dataForm = {};
$($(form).serializeArray()).each(function(index, obj){
    dataForm[obj.name] = obj.value;
});
dataForm["MyArray"] = myArray;

還有ajax: post: dataForm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM