Ajax+FormData+javascript實(shí)現(xiàn)無(wú)刷新表單信息提交
原理:
dom收集表單信息,利用FormData快速收集表單信息 ,實(shí)例化表單數(shù)據(jù)對(duì)象 同時(shí)收集fm的表單域信息。
var fd = new FormData(fm); //實(shí)例化對(duì)象
alert(fd);
fd對(duì)象內(nèi)部有收集的form表單域信息
ajax傳遞表單信息
1.靜態(tài)顯示頁(yè)面代碼
<!DOCTYPE html > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> window.onload = function(){ var fm = document.getElementsByTagName('form')[0]; fm.onsubmit = function(){ //利用FormData實(shí)現(xiàn)form表單信息收集 var fd = new FormData(fm); //fd 內(nèi)部會(huì)把普通表單域 和 上傳文件域 的信息都收集 //ajax傳遞表單信息 var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if(xhr.readyState==4){ alert(xhr.responseText); } } //設(shè)置監(jiān)聽(tīng)事件ajax.upload.onprogress xhr.upload.onprogress = function(evt){ //感知附件上傳情況,利用事件對(duì)象感知 var loaded = evt.loaded; var total = evt.total; var per = Math.floor((loaded/total)*100)+"%"; document.getElementById('son').innerHTML = per; document.getElementById('son').style.width = per; } xhr.open('post','./05.php'); xhr.send(fd); return false;//組織瀏覽器提交 } } </script> <style type="text/css"> #pat {width:430px;height:40px; border:5px solid blue;} #son {width:0;height:100%; background-color:lightblue;} </style> </head> <body> <h2>ajax+FormData實(shí)現(xiàn) 無(wú)刷新文件上傳</h2> <form method="post" action="" > <p>用戶名:<input type="text" name="username" /></p> <p>密碼:<input type="password" name="password" /></p> <p>郵箱:<input type="text" name="email" /></p> <div id="pat"><div id="son"></div></div> <p>頭像:<input type="file" name="user_pic" /></p> <p><input type="submit" value="注冊(cè)" /></p> </form> </body> </html>
2.php頁(yè)面代碼
服務(wù)器保存附件名字為本身名字
本地文件------>上傳(php程序處理)------>服務(wù)器
本地文件名字的 字符集 gb2312
php程序的 字符集 utf-8--->gb2312 (在程序里邊把utf-8編碼的附件名字 轉(zhuǎn)碼為 gb2312)服務(wù)器的 字符集 gb2312
<?php //$_FILES['user_pic']['error'] //0->ok 1->大小超過(guò)php.ini限制 2->大小超過(guò)MAX_FILE_SIZE限制 //3->附件只上傳了一部分(不完整) 4->沒(méi)有上傳附件 if($_FILES['user_pic']['error']>0){ exit('上傳附件有問(wèn)題,有可能沒(méi)有附件'); } //服務(wù)器保存附件名字為本身名字 //本地文件------>上傳(php程序處理)------>服務(wù)器 //本地文件名字的 字符集 gb2312 //php程序的 字符集 utf-8--->gb2312 // (在程序里邊把utf-8編碼的附件名字 轉(zhuǎn)碼為 gb2312) //服務(wù)器的 字符集 gb2312 $name = $_FILES['user_pic']['name']; $name = iconv('UTF-8','GB2312',$name); //$name的編碼由utf-8---變?yōu)?-->gb2312 $path = "./upload/"; //附件上傳邏輯 //move_uploaded_file(臨時(shí)路徑名,真實(shí)路徑名); if(move_uploaded_file($_FILES['user_pic']['tmp_name'],$path.$name)) echo "success"; else echo "fail";
下面看下jQuery 將form表單通過(guò)ajax實(shí)現(xiàn)無(wú)刷新提交的實(shí)例代碼。
代碼如下所示:
//將form轉(zhuǎn)換為AJAX提交 function ajaxSubmit(url,frm,fn){ var dataPara=getFormJson(frm); $.ajax({ url:url, type:"post", data:dataPara, async:false, dataType:'txt', success:fn }); } //將form中的值轉(zhuǎn)換為鍵值對(duì) function getFormJson(frm){ var o={}; var a=$(frm).serializeArray(); $.each(a,function(){ if(o[this.name]!==undefined){ if(!o[this.name].push){ o[this.name]=[o[this.name]]; } o[this.name].push(this.value || ''); }else{ o[this.name]=this.value || ''; } }); return o; } /* //前臺(tái)調(diào)用方式 function autoSubmitFun(){ ajaxSubmit("autoSumitScoreAJAX.action",$('#formId'),function(){}); } */
以上所述是小編給大家介紹的Ajax+FormData+javascript實(shí)現(xiàn)無(wú)刷新表單信息提交,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- JS中使用FormData上傳文件、圖片的方法
- JavaScript將base64圖片轉(zhuǎn)換成formData并通過(guò)AJAX提交的實(shí)現(xiàn)方法
- JS FormData上傳文件的設(shè)置方法
- js使用formData實(shí)現(xiàn)批量上傳
- vuejs使用FormData實(shí)現(xiàn)ajax上傳圖片文件
- Angular Js文件上傳之form-data
- js動(dòng)態(tài)在form上插入enctype=multipart/form-data的問(wèn)題
- NodeJs form-data格式傳輸文件的方法
- Vue axios 將傳遞的json數(shù)據(jù)轉(zhuǎn)為form data的例子
- JS FormData對(duì)象使用方法實(shí)例詳解
相關(guān)文章
javascript之學(xué)會(huì)吝嗇 精簡(jiǎn)代碼
前端開發(fā),要學(xué)會(huì)吝嗇:2010-04-04JavaScript保留兩位小數(shù)的2個(gè)自定義函數(shù)
這篇文章主要介紹了JavaScript保留兩位小數(shù)的2個(gè)自定義函數(shù),需要的朋友可以參考下2014-05-05Bootstrap框架的學(xué)習(xí)教程詳解(二)
Bootstrap,來(lái)自 Twitter,是目前最受歡迎的前端框架。本文給大家介紹Bootstrap框架的學(xué)習(xí)教程詳解,對(duì)bootstrap框架感興趣的朋友跟著小編一起學(xué)習(xí)吧2016-10-10JavaScript之Blob對(duì)象類型的具體使用方法
這篇文章主要介紹了JavaScript之Blob對(duì)象類型的具體使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11layer彈窗在鍵盤按回車將反復(fù)刷新的實(shí)現(xiàn)方法
今天小編就為大家分享一篇layer彈窗在鍵盤按回車將反復(fù)刷新的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09js中符號(hào)轉(zhuǎn)意問(wèn)題示例探討
符號(hào)轉(zhuǎn)意,大家或許有所了解,知識(shí)在使用中或許不是那么的在意,其實(shí)這個(gè)問(wèn)題很重要,下面為大家講解下js符號(hào)轉(zhuǎn)意問(wèn)題相關(guān)知識(shí),感興趣的朋友可以參考下2013-08-08