使用formdata发布数组

Rai*_*off 9 arrays jquery post html5 image

我正在使用新的HTML5 FormData-Object通过Ajax发布一些值和图像.它到目前为止工作正常.现在,我想使用这个对象发布一个数组,但我在服务器端的所有内容都是"[object - object]".如何使用formdata发布数组?

到目前为止我得到了什么

var formData=new FormData();
formData.append('text', $('#text').attr('value'));
formData.append('headline',$('#headline').attr('value'));
formData.append('myarray',{key1: 'bla', key2: 'blubb'});
Run Code Online (Sandbox Code Playgroud)

最后一行不起作用.我发送带有此代码的请求

                 $.ajax({
                        url: 'xyz',
                        data: formData,
                        type: 'POST',
                        processData: false,
                        contentType: false,
                        success: function(data) { 
                            var decoded=$.parseJSON(data);
                            displaySuccess('Success', decoded.message); 
                        },error: function(data){
                            var decoded=$.parseJSON(data);
                            displayError('Error', decoded.message);
                        },complete: function(data){
                            $('#cursor').hide();
                            $("#submitbutton").removeAttr('disabled')
                        }
                    });
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Mat*_*ton 16

.append()在关联数组的每个元素上使用可能会产生您期望的结果.

取代这一行:

formData.append('myarray',{key1: 'bla', key2: 'blubb'});
Run Code Online (Sandbox Code Playgroud)

您可以尝试以下方法:

var myarray = {key1: 'bla', key2: 'blubb'};

jQuery.each(myarray, function(key, value) {
    formData.append('myarray['+key+']', value);
});
Run Code Online (Sandbox Code Playgroud)


Rai*_*off 5

谢谢.我现在想出了这个解决方案:

                for (i = 0; i < social_networks.length; i++) {
                    formData.append("myarray["+i+"][mykey]",arr[i]['mykey']);
                    formData.append("myarray["+i+"][mykey2]",arr[i]['mykey2']);
                }
Run Code Online (Sandbox Code Playgroud)


小智 3

从您的语法来看,您似乎正在尝试传递一个对象,而不是一个数组。我不认为你可以通过 HTML 表单传递对象。

{ key1 : value1 , key2 : value2 }
Run Code Online (Sandbox Code Playgroud)

[ value1, value2 ]
Run Code Online (Sandbox Code Playgroud)

这是一般JS 语法的便捷参考