enctype="multipart/form-data"來顯示然而,AJAX就是問題了。要如何寫payload?
幸好,HTML5提供了FormData這簡單的東西給我們了
下為一個簡單的 form :
<form id="upload-form" enctype="multipart/form-data" method="post" action="upload"> File Name:<input type="text" name="name" /><br /> <input type="file" name="file" /><br /> <input type="submit" /> </form>
而 FormData 使用方式如下:
var formData = new FormData
var xhr = new XMLHttpRequest
xhr.open("POST", document.querySelector("form#upload-form").action, true);
var formElements = [].slice.call(document.querySelectorAll("form#upload-form [name]")) // 用 Array.prototype.slice.call 將 NodeList 轉為 Array
formElements.forEach(function(node, index, array){
if(node.type == "file"){
formData.append(node.name, node.files[0])
}else{
formData.append(node.name, node.value)
}
})
xhr.send(formData)
上面方式是比較能夠自由決定要傳送的 form data如果閒麻煩可以直接用下面的 code
var formData = new FormData(document.querySelector("form#upload-form"));
謝謝你^^
回覆刪除作者已經移除這則留言。
回覆刪除