2012-12-01 58 views
6

我試圖查看[object FormData]中包含哪些內容,特別是在名稱應該是Name的特定元素中。我想提醒它,檢查的內容是正確的,但這樣做會返回undefined[對象FormData]中的警報特定元素(用於測試)

alert(fd['Name']); 

我敢肯定,我正確加載表格數據,所以我在想,如果這個問題是我正在訪問的方式是錯誤的數據...

PS報警僅fd返回[object FormData]

+0

顯示更多代碼,以及您的HTML。 –

回答

10

IvanZh告訴我,這種方法對他不起作用,這促使我對HTML5 FormData對象進行一些研究。事實證明,我對此完全錯了(請參閱下面的舊錯誤答案)。 FormData的所有數據都在原生代碼中。這意味着瀏覽器使用其實現語言處理表單域和文件上傳的數據。

報價MDN

注:...... FORMDATA對象不是stringifiable對象。如果 要將所提交的數據串聯起來,請使用先前的純AJAX 示例。還要注意的是,雖然在這個例子中有一些文件 的字段,當你通過FormData API提交表單時,你做的 也不需要使用FileReader API:文件自動加載並上傳 。

沒有辦法在JavaScript中表示這些信息,所以我的天真建議簡單地將它作爲JSON序列化將不起作用(這提示我想知道爲什麼首先接受這個答案)。

根據您試圖實現的內容(例如,如果您只是嘗試調試),只需將此信息從返回相關JSON元數據的服務器端腳本反彈出來可能是可行的。例如,在PHP中,您可以將FormData發送到analyzeForm.php,這可以輕鬆訪問您在超全球相關請求下附加到FormData的所有內容。該腳本將消化表單的內容並返回相關信息,以便輕鬆解析JSON。這是非常低效的,所以它可能不適合生產環境,但它是一些東西。

老不正確的答案:

你可以嘗試使用:

alert(JSON.stringify(fd)); 

查看的fd結構的文本表示。

您也可以使用console.log,但這是非標準功能,並不保證會出現在所有瀏覽器中。

+0

我不能在FF和Chrome中重複你的方法,我只是得到空對象:'{}' – IvanZh

+0

@IvanZh這是因爲你的對象是空的,一個空對象序列化爲'{}',所以 –

+0

可能是我做的不正確?請看看這個,或者在瀏覽器控制檯中運行: var fd = new FormData; fd.append('test',123); alert(JSON .stringify(fd))'' – IvanZh

-2

你應該這樣做:

console.log(fd['Name']); 

在大多數瀏覽器中,尤其是Chrome瀏覽器中,您可以打開開發人員工具(F12)並查看控制檯。

你會得到一個很好的展開你的對象的視圖,你可以檢查它。

+0

它顯示undefined :( –

2

用戶Spokey把我使用的jsfiddle here這個技術,它一直是非常方便的在能夠「看到」的值在FORMDATA對象,基本邏輯之中:

function submitFormFunction() { 
//create formData object 
var myFormData = new FormData(); 
// get the values from some input fields 
var myKey1 = $("input[name='my_field_one']").val(); 
var myKey2 = $("input[name='my_field_two']").val(); 
// append the values to the formData object, whilst also defining their key names 
myFormData.append("my_field_one",myKey1); 
myFormData.append("my_field_two",myKey2); 
// mock implementation - in order to view what is being sent 
var xhr = new XMLHttpRequest; 
xhr.open('POST', '/echo/html/', true); 
xhr.send(myFormData); 
} 

只要保持「網絡「選項卡在Firebug中打開,您將能夠看到值。