原理:前端與后端的數據交互,最常用的就是GET、POST,比較常用的用法是:提交表單數據到后端,后端返回json
- 前端的數據發送與接收
1)提交表單數據
2)提交JSON數據 - 后端的數據接收與響應
1)接收GET請求數據
2)接收POST請求數據
3)響應請求
1、提交表單數據
1)GET請求
1 var data = { 2 "name": "test", 3 "age": 1 4 }; 5 $.ajax({ 6 type: 'GET', 7 url: /your/url/, 8 data: data, // 最終會被轉化為查詢字符串跟在url后面: /your/url/?name=test&age=1 9 dataType: 'json', // 注意:這里是指希望服務端返回json格式的數據 10 success: function(data) { // 這里的data就是json格式的數據 11 }, 12 error: function(xhr, type) { 13 } 14 });
2)POST請求
1 var data = {} 2 // 如果頁面並沒有表單,只是input框,請求也只是發送這些值,那么可以直接獲取放到data中 3 data['name'] = $('#name').val() 4 5 // 如果頁面有表單,那么可以利用jquery的serialize()方法獲取表單的全部數據 6 data = $('#form1').serialize(); 7 8 $.ajax({ 9 type: 'POST', 10 url: /your/url/, 11 data: data, 12 dataType: 'json', // 注意:這里是指希望服務端返回json格式的數據 13 success: function(data) { // 這里的data就是json格式的數據 14 }, 15 error: function(xhr, type) { 16 } 17 });
【注意】
A)參數dataType:期望的服務器響應的數據類型,可以是null, xml, script, json
B)請求頭中的Content-Tpye默認是
A)參數dataType:期望的服務器響應的數據類型,可以是null, xml, script, json
B)請求頭中的Content-Tpye默認是
Content-Type:application/x-www-form-urlencoded
,所以參數會被編碼為 name=xx&age=1 這種格式,提交到后端,后端會當作表單數據處理
2、提交JSON數據
如果要給后端傳遞json數據,就需要增加content-type參數,告訴后端,傳遞過來的數據格式,並且需要將data轉為字符串進行傳遞。實際上,服務端接收到后,發現是json格式,做的操作就是將字符串轉為json對象。
另外,不轉為字符串,即使加了content-type的參數,也默認會轉成 name=xx&age=1,使后端無法獲取正確的json
另外,不轉為字符串,即使加了content-type的參數,也默認會轉成 name=xx&age=1,使后端無法獲取正確的json
1 // POST一個json數據 2 3 var data = { 4 “name”: "test", 5 "age", 1 6 } 7 $.ajax({ 8 type: 'POST', 9 url: /your/url/, 10 data: JSON.stringify(data), // 轉化為字符串 11 contentType: 'application/json; charset=UTF-8', 12 dataType: 'json', // 注意:這里是指希望服務端返回json格式的數據 13 success: function(data) { // 這里的data就是json格式的數據 14 }, 15 error: function(xhr, type) { 16 } 17 });
3、前端向后端傳數據的方法
1)通過url路徑傳遞參數
1 var id = 5; 2 boolean flag = false; 3 4 /**重點:ajax只需要type和url屬性*/ 5 $.ajax({ 6 async: false, 7 cache: false, 8 type: 'POST', 9 url: 'area/delete/' + flag + '/' + id, //(1)請求的action路徑,可以傳遞參數到后台 10 error: function() { 11 alert('請求失敗 '); 12 }, 13 success: function(data) { 14 alert(data); 15 } 16 });
2)通過Ajax.data屬性
1 var postData = { //(2)傳遞參數到后台,注意后台接收方式 2 "param1": "param1", 3 "areaId": 2, 4 "deleteId": 3, 5 "ids": "254,249,248" 6 /**重點:ajax的type,url,dataType,data屬性*/ 7 $.ajax({ 8 async: false, 9 cache: false, 10 type: 'POST', 11 url: 'area/delete', 12 dataType: "json", 13 data: postData, 14 error: function() { 15 alert('請求失敗 '); 16 }, 17 success: function(data) { 18 alert(data); 19 } 20 21 });
3)通過Ajax.data屬性傳遞多個參數
1 //第一步:定義json格式數據 2 var postData = { 3 "param1": "param1", 4 "areaId": 2, 5 "deleteId": 3 6 }; 7 /**ajax的type,url,dataType,contentType,data屬性*/ 8 $.ajax({ 9 async: false, 10 cache: false, 11 type: 'POST', 12 url: 'area/delete', 13 dataType: "json", 14 contentType: 'application/json', //第二步:定義格式 15 data: JSON.stringify(postData), //第二步;把json轉為String傳遞給后台 16 error: function() { 17 alert('請求失敗 '); 18 }, 19 success: function(data) { 20 alert(data); 21 } 22 });
文章轉載鏈接:
① https://www.jianshu.com/p/4350065bdffe (詳細的后台數據接收與返回)
② https://blog.csdn.net/dreamstar613/article/details/61912717 (js 和 java 的代碼解釋)