我需要使用ajax和FormData发送一些数据,因为我想要发送一个文件和一些其他参数。我通常发送数据的方式是:
$.ajax({
type: 'POST',
url: 'some_url',
dataType: 'json',
processData:false,
contentType:false,
data:{
Lvl_1-1: 'something',
Lvl_1-2: 'something',
Lvl_1-3: {
Lvl_1-3-1: "something",
Lvl_1-3-2: "something",
Lvl_1-3-3: "something",
},
},
...
});
如果我不使用FormData(),就没有问题,但是当使用FormData()时,只有Lvl1上的数据是正常的,但任何嵌套的内容都显示为字符串,如下所示。<b>array</b> <i>(size=3)</i>
'Lvl1-1' <font color='#888a85'>=></font> <small>string</small>
<font color='#cc0000'>'Something'</font>
<i>(length=23)</i>
'Lvl1-2' <font color='#888a85'>=></font> <small>string</small>
<font color='#cc0000'>''Something''</font> <i>(length=3)</i>
'Lvl1-3' <font color='#888a85'>=></font> <small>string</small>
<font color='#cc0000'>'[object Object]'</font> <i>(length=17)</i>
如果我使用FormData()来编码Lvl1-3内部的数据,那么我得到的将不再是[object Object]
,而是[object FormData]
。
如何才能在Lvl1-3上获得数组而不是字符串?
注意:如果文件在顶层(Lvl_1),我可以使用FormData()发送文件而没有任何问题。我没有写附加文件的代码,因为那不是问题,嵌套数据才是问题。我只提到了文件,因为这就是我使用FormData()的原因。