首頁 > web前端 > js教程 > 主體

實例分析jquery ajax異步提交表單資料的方法

小云云
發布: 2017-12-26 15:16:27
原創
1832 人瀏覽過

本文主要為大家詳細介紹了jquery ajax異步提交表單資料的方法,具有一定的參考價值,有興趣的小夥伴們可以參考一下,希望能幫助到大家。

使用jquery的ajax方法可以異步提交表單,成功後後台返回json數據,回調函數處理,可以不用刷新頁面,達到異步的目的;

處理表單的數據可以用serialize ()方法進行序列化,而如果提交的資料包含檔案流的話,就需要使用FormData物件:

不含檔案的表單資料使用:var data = $(form).serialize();

有檔案的表單資料使用:   var  data = new FormData($(form)[0]);

一、不含檔案的ajax提交資料:

html:form表單


 <form id="addForm" action="${pageContext.request.contextPath}/admin/saveAdd" method="post">    
  <input type="text" name="name" placeholder="请输入名字" />
  <input type="password" name="password" placeholder="密码"/>
 </form>
<button type="button" id="submitAdd">确认</button>
登入後複製

jquery 非同步處理


 $("#submitAdd").click(function(){
    
   var targetUrl = $("#addForm").attr("action");    
   var data = $("#addForm").serialize();     
    $.ajax({ 
     type:&#39;post&#39;,  
     url:targetUrl, 
     cache: false,
     data:data,  
     dataType:&#39;json&#39;, 
     success:function(data){      
       alert(&#39;success&#39;);
     },
     error:function(){ 
      alert("请求失败")
     }
    })
    
 })
登入後複製

 

#二、帶文件的ajax提交資料:

 html:form表單

 有檔案上傳的form表單需要在

標籤裡加入enctype="multipart /form-data"屬性:


<form id="addForm" action="${pageContext.request.contextPath}/admin/saveAdd" method="post"enctype=" multipart/form-data">    
  <input type="text" name="name" placeholder="请输入名字" />
  <input type="password" name="password" placeholder="密码"/>
  <input type="file" name="avatar" />
 </form>
<button type="button" id="submitAdd">确认</button>
登入後複製

 jquery 非同步處理


$("#submitAdd").click(function(){
    
   var targetUrl = $("#addForm").attr("action");    
   var data = new FormData($( "#addForm" )[0]);     
    $.ajax({ 
     type:&#39;post&#39;,  
     url:targetUrl, 
     cache: false,    //上传文件不需缓存
     processData: false, //需设置为false。因为data值是FormData对象,不需要对数据做处理
     contentType: false, //需设置为false。因为是FormData对象,且已经声明了属性enctype="multipart/form-data"
     data:data,  
     dataType:&#39;json&#39;, 
     success:function(data){      
       alert(&#39;success&#39;);
     },
     error:function(){ 
      alert("请求失败")
     }
    })
    
 })
登入後複製

上面是用表單來建立FormData對象,如果沒有表單處理方式如下:

html:沒有form表單


<p id="uploadFile">
 <input id="file" name="avatar" type="file"/>
 <button id="upload" data-url="/admin/upload" type="button">上传头像</button>
</p>
登入後複製

jquery非同步處理:


$("#upload").click(function(){
    
   var targetUrl = $(this).attr("data-url");    
   var data = new FormData();
   //FormData对象加入参数
   data.append(&#39;file&#39;, $(&#39;#file&#39;)[0].files[0]); //&#39;file&#39; 为参数名,$(&#39;#file&#39;)[0].files[0])获取上传的文件,如果需上传多个文件,要在<input>标签加上属性multiple    
    $.ajax({ 
     type:&#39;post&#39;,  
     url:targetUrl, 
     cache: false,    
     processData: false, 
     contentType: false, 
     data:data,  
     dataType:&#39;json&#39;, 
     success:function(data){      
       alert(&#39;success&#39;);
     },
     error:function(){ 
      alert("请求失败")
     }
    })
    
 })
登入後複製

相關推薦:

實例分析Ajax非同步請求技術

##實例講解Ajax非同步請求技術

談談ajax非同步請求的實例用法#

以上是實例分析jquery ajax異步提交表單資料的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!