首頁 > web前端 > js教程 > 實例分析jquery ajax異步提交表單資料的方法

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

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

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

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

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

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

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

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

html:form表單


1

2

3

4

5

<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 非同步處理


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

$("#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"屬性:


1

2

3

4

5

6

<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 非同步處理


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

$("#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表單


1

2

3

4

<p id="uploadFile">

 <input id="file" name="avatar" type="file"/>

 <button id="upload" data-url="/admin/upload" type="button">上传头像</button>

</p>

登入後複製

jquery非同步處理:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$("#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中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
引入jQuery 文件
來自於 1970-01-01 08:00:00
0
0
0
jquery筆記哪裡有下?
來自於 1970-01-01 08:00:00
0
0
0
javascript - vue+webpack怎麼引入jquery
來自於 1970-01-01 08:00:00
0
0
0
php+jquery的問題
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板