溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jquery ajax異步提交表單數據的方法

發(fā)布時間:2020-08-31 11:47:04 來源:腳本之家 閱讀:138 作者:偷酒的貓 欄目:web開發(fā)

使用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:'post',  
     url:targetUrl, 
     cache: false,
     data:data,  
     dataType:'json', 
     success:function(data){      
       alert('success');
     },
     error:function(){ 
      alert("請求失敗")
     }
    })
    
 })

 

二、帶文件的ajax提交數據:

 html:form表單

 有文件上傳的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:'post',  
     url:targetUrl, 
     cache: false,    //上傳文件不需緩存
     processData: false, //需設置為false。因為data值是FormData對象,不需要對數據做處理
     contentType: false, //需設置為false。因為是FormData對象,且已經聲明了屬性enctype="multipart/form-data"
     data:data,  
     dataType:'json', 
     success:function(data){      
       alert('success');
     },
     error:function(){ 
      alert("請求失敗")
     }
    })
    
 })

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

html:沒有form表單

<div id="uploadFile">
 <input id="file" name="avatar" type="file"/>
 <button id="upload" data-url="/admin/upload" type="button">上傳頭像</button>
</div>

jquery異步處理:

$("#upload").click(function(){
    
   var targetUrl = $(this).attr("data-url");    
   var data = new FormData();
   //FormData對象加入參數
   data.append('file', $('#file')[0].files[0]); //'file' 為參數名,$('#file')[0].files[0])獲取上傳的文件,如果需上傳多個文件,要在<input>標簽加上屬性multiple    
    $.ajax({ 
     type:'post',  
     url:targetUrl, 
     cache: false,    
     processData: false, 
     contentType: false, 
     data:data,  
     dataType:'json', 
     success:function(data){      
       alert('success');
     },
     error:function(){ 
      alert("請求失敗")
     }
    })
    
 })

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI