首頁 >web前端 >js教程 >jquery+ajax實現非同步提交表單數據

jquery+ajax實現非同步提交表單數據

php中世界最好的语言
php中世界最好的语言原創
2018-04-19 14:17:372082瀏覽

這次帶給大家jquery ajax實現異步提交表單數據,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:'post',  
     url:targetUrl, 
     cache: false,
     data:data,  
     dataType:'json', 
     success:function(data){      
       alert('success');
     },
     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:'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("请求失败")
     }
    })
    
 })

上面是用表單來建立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('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("请求失败")
     }
    })
    
 })

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

用jQuery實作在前端搜尋

#jquery選取下拉方塊中值統計到文字方塊

jQuery zTree在非同步過程中重複新增子節點

jQuery怎麼動態操控頁面元素

#

以上是jquery+ajax實現非同步提交表單數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn