您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么在ajax中利用formdata流上傳文件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
//html如下 //form1 <form class="col-xs-12 register-form" id="registerForm" method="post" action=""> <div class="form-group col-xs-wap tc"> <div class="col-xs-2"> <i class="icon i-store"></i> </div> <div class="col-xs-10"> <input type="text" class="form-control" placeholder="店鋪名稱" id="shopName" name="shopName"> </div> </div> <div class="form-group col-xs-wap tc"> <div class="col-xs-2"> <i class="icon i-user"></i> </div> <div class="col-xs-10"> <input type="text" class="form-control" placeholder="本人姓名" id="name" name="name"> </div> </div> </form> //form2 <form action="" method="post" class="mt10" id="registerForm2"> <input id="frontPhoto" name="frontPhoto"/> <input id="backPhoto" name="backPhoto"/> <input id="handlePhoto" name="handlePhoto"/> </form>
$("#btn-register-confirm").click(function () { //upRegister()是表單驗證,這就沒有給出了 if (upRegister()){ var form=$("#registerForm2")[0];//第二個表單的id,注意[0]不能漏掉 var fd=new FormData(form); //由于后臺接收的數據只能是序列化之后的樣子,所以將第一個表單的字段存放在cookie中。通過fd.append()以鍵值對形式存放 fd.append("shopName",$.cookie("shopName")); fd.append("name",$.cookie("name")); $.ajax({ type:'post', async: false, url:"url", data:fd, processData:false,//因為data值是FormData對象,不需要對數據做處理。 contentType:false,//因為是由<form>表單構造的FormData對象,所以這里設置為false。 success:function(data){ if (data.resultCode=="0"){ webToast("成功注冊!"); console.log("成功注冊"); } }, error:function(){ console.log("注冊失敗"); } }) } });
以上就實現了ajax上傳文件流及一般參數。這主要涉及到2方面:
不同頁面的不同表單要放在同一個按鈕觸發同一個ajax傳輸到服務器,使用cookie先存儲一個表單數據,這可能會麻煩些并且不安全,但目前我也只想到了這種方式,如果有更好的歡迎補充;
ajax上傳文件流,要注意var fd=new FormData($("#表單id")[0]);[0]千萬要帶上,我就是因為這個弄了一整天才好。processData:false, contentType:false,還有ajax的這兩個參數要寫為false,具體原因上面已經寫了。
看完上述內容,你們對怎么在ajax中利用formdata流上傳文件有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。