2014-02-24 199 views
0

我從<li>的列表數據追加到FormData對象有:如何將對象推送到數組並作爲FormData發送?

media_links_array = []; 
$('.media_links_ul:first li').each(function() { 
    var media_type = $(this).attr("data-media_type"); 
    var media_link = $(this).text(); 
    var myObject = { 
     "media_type": media_type, 
     "media_link": media_link 
    } 
    media_links_array.push(myObject); 
}); 
myFormData.append("media_links", media_links_array); 

預期行爲

我預期發送(在Firebug網> POST)爲:

--------------- nnnnnnnnn Content-Disposition: form-data; name="media_links" 

{"media_type":media_type,"media_link":media_link} 

當前行爲

但它是作爲發送:

--------------- nnnnnnnnn Content-Disposition: form-data; name="media_links" 

[object Object],[object Object] 
+0

因爲這是應用toString()時發生的情況。 – epascarello

+0

FormData.append需要一個字符串文件或blob作爲第二個參數。你給它一個數組,這是沒有這些東西... https://developer.mozilla.org/en-US/docs/Web/API/FormData –

+0

爲什麼你需要一個formData對象,這只是兩個你想要發送到服務器的字符串,當然有更簡單的方法來做到這一點,如jQuery.ajax? – adeneo

回答

0

JSON.stringify(media_links_array)會給你JSON對象的字符串。

+1

注意:這不適用於某些瀏覽器(http://caniuse.com/json),A級瀏覽器沒有問題,但如果您需要支持類似IE7或更低版​​本的瀏覽器,則需要使用polyfill( http://bestiejs.github.io/json3/) – Populus

+1

@Populus正確的,但這也是FormData的一個問題。如果我們可以假設FormData存在,我們也可以假設JSON.stringify。 –

+0

非常感謝,並獲得更多信息。 – user1063287

相關問題