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"));
謝謝你^^
回覆刪除作者已經移除這則留言。
回覆刪除