Html5 FormData+Ajax表单数据提交
首先来认识一下FormData表单
var formData = new FormData(); formData.append(‘name‘, ‘zhangsan‘); formData.append(‘age‘, 20); formData.append(‘gender‘, ‘M‘); //防止跨域,注意,该字符串由服务端生成后一部分发送到session中,一部分放在form隐藏域中 formData.append(‘csrf‘, ‘yty98db128swdx827dcd3jdxh‘); 或者使用另一种方式 <form id=‘registerform‘ name=‘user/register‘ action=‘user/register‘> <input type=‘text‘ name=‘username‘ value=‘张三‘> <input type=‘email‘ name=‘email‘ value=‘[email protected]‘> <input type=‘number‘ name=‘birthDate‘ value=‘1940‘> <input type=‘submit‘ onclick=‘sendForm(this.form); return false;‘> </form> var formData = new FormData(document.forms[‘registerform‘]); formData.append(‘csrf‘, ‘yty98db128swdx827dcd3jdxh‘);
让后构建Ajax
function sendForm(formData) { var xhr = new XMLHttpRequest(); xhr.open(‘POST‘, form.action, true); xhr.onload = function(e) { // ... }; // 指定通信过程中状态改变时的回调函数 xhr.onreadystatechange = function() { // 通信成功时,状态值为4 var completed = 4; if(xhr.readyState === completed) { if(xhr.status === 200) { // 处理服务器发送过来的数据 }else{ // 处理错误 } } }; xhr.send(formData); }
使用FormData进行文件上传
function uploadFiles(url, files) { var formData = new FormData(); for (var i = 0, file; file = files[i]; ++i) { formData.append(file.name, file); } var xhr = new XMLHttpRequest(); xhr.open(‘POST‘, url, true); xhr.onload = function(e) { ... }; xhr.send(formData); // multipart/form-data } document.querySelector(‘input[type="file"]‘).addEventListener(‘change‘, function(e) { uploadFiles(‘/server‘, this.files); }, false);
function upload(blobOrFile) { var xhr = new XMLHttpRequest(); xhr.open(‘POST‘, ‘/server‘, true); xhr.onload = function(e) { ... }; // Listen to the upload progress. var progressBar = document.querySelector(‘progress‘); xhr.upload.onprogress = function(e) { if (e.lengthComputable) { progressBar.value = (e.loaded / e.total) * 100; progressBar.textContent = progressBar.value; // Fallback for unsupported browsers. } }; xhr.send(blobOrFile); } upload(new Blob([‘hello world‘], {type: ‘text/plain‘}));
参考链接:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
http://javascript.ruanyifeng.com/bom/ajax.html
http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。