如何將HTML5 FormData對象轉換爲JSON?沒有Jquery,並像處理對象一樣處理FormData中的嵌套屬性。如何將FormData(HTML5對象)轉換爲JSON
回答
您可以通過使用FormData()對象來實現此目的。此FormData對象將使用表單的當前鍵/值使用鍵的每個元素的name屬性及其提交的值來填充該FormData對象。它也將編碼文件輸入內容。
例子:
var myForm = document.getElementById('myForm');
myForm.addEventListener('submit', function(event)
{
event.preventDefault();
var formData = new FormData(myForm),
result = {};
for (var entry of formData.entries())
{
result[entry[0]] = entry[1];
}
result = JSON.stringify(result)
console.log(result);
});
易於使用的功能
function FormDataToJSON(FormElement){
var formData = new FormData(FormElement);
var ConvertedJSON= {};
for (const [key, value] of formData.entries())
{
ConvertedJSON[key] = value;
}
return ConvertedJSON
}
使用示例
var ReceivedJSON = FormDataToJSON(document.getElementById('FormId');)
在此代碼中,我使用for
循環創建了空的JSON變量。我在每個Itration中都使用了從formData對象到JSON密鑰的key
。
你覺得這個代碼在我的JS庫在GitHub上確實暗示我,如果需要改進我已經把代碼這裏https://github.com/alijamal14/Utilities/blob/master/Utilities.js
請解釋你的代碼。 – zuluk
@zuluk [Explained](https://stackoverflow.com/revisions/44151416/2)**謝謝** –
FORMDATA方法.entries
和for of
表達沒有在IE11和Safari支持。
這裏是一個simplier版支持Safari瀏覽器,Chrome瀏覽器,Firefox和邊緣
function formDataToJSON(formElement) {
var formData = new FormData(formElement),
convertedJSON = {};
formData.forEach(function(value, key) {
convertedJSON[key] = value;
});
return convertedJSON;
}
警告:這個答案不IE11工作。
FormData在IE11中沒有forEach
方法。
我仍在尋找支持所有主流瀏覽器的最終解決方案。
這是完美的!我們必須支持舊版瀏覽器,並且迭代器的使用不太直觀。 –
如果您正在使用lodash可以與fromPairs
import {fromPairs} from 'lodash';
const object = fromPairs(Array.from(formData.entries()));
這裏簡要地做一個辦法做到這一點更功能風格,而不需要使用庫。
Array.from(formData.entries()).reduce((memo, pair) => ({
...memo,
[pair[0]]: pair[1],
}), {});
例子:
document.getElementById('foobar').addEventListener('submit', (e) => {
e.preventDefault();
const formData = new FormData(e.target);
const data = Array.from(formData.entries()).reduce((memo, pair) => ({
...memo,
[pair[0]]: pair[1],
}), {});
document.getElementById('output').innerHTML = JSON.stringify(data);
});
<form id='foobar'>
<input name='baz' />
<input type='submit' />
</form>
<pre id='output'>Input some value and submit</pre>
- 1. 將json對象轉換爲formData(HTML5對象)
- 2. 如何將html5畫布圖像轉換爲json對象?
- 3. 如何將json對象轉換爲java
- 4. 如何將json轉換爲對象?
- 5. 如何將JSON對象轉換爲CLLOCATIONDEGREES?
- 6. 如何將樹轉換爲JSON對象?
- 7. 如何將NSDictionary轉換爲JSON對象?
- 8. 如何將JSON對象轉換爲servlet?
- 9. 如何將i18n.map轉換爲json對象
- 10. 如何將JSON轉換爲對象?
- 11. 如何將JSON轉換爲對象
- 12. 將對象轉換爲json?
- 13. 將對象轉換爲json
- 14. 如何將jQuery表單對象轉換爲FormData?
- 15. 將formdata轉換爲嵌套的JSON
- 16. 將JSON對象轉換爲C#對象
- 17. 將jcas對象轉換爲json對象
- 18. 將javascript對象轉換爲json對象
- 19. JSON - 將對象轉換爲JSON數組
- 20. 將JSON對象轉換爲JSON數組
- 21. 將JSON對象轉換爲JSON陣列
- 22. 如何將類mysqli_result的對象轉換爲json對象
- 23. 如何使用JAXB將屬性對象轉換爲JSON對象
- 24. 如何將JSON對象轉換爲Objective-C Cocoa對象?
- 25. 如何將JSON對象轉換爲Python對象?
- 26. 如何將對象列表轉換爲JSON對象?
- 27. 如何將對象的ArrayList轉換爲單獨的JSON對象
- 28. 如何將JSON對象轉換爲Angular對象?
- 29. 如何將Ruby對象轉換成JSON
- 30. 如何JSON對象轉換爲IOS
你到底想幹什麼? 'JSON.stringify()'有幫助嗎?也許你試圖解決可能以其他方式完成的事情? – Justinas
[將JS對象轉換爲JSON字符串](http:// stackoverflow。com/questions/4162749/convert-js-object-to-json-string) – Liam
因爲我不想將JavaScript對象轉換爲json,所以也不重複,也不想使用Jquery.serialize() –