spring boot ajax post 前后端


1 傳輸的數據格式是json

1.1 前端ajax

json的所有的key都必須是雙引號引用的,並且最外層也要用雙引號引用。例如

"{"a":b, "b":c,}",因為一般情況下js對象不是這樣的,js對象{a:b, b:c},是沒有雙引號引用的。因此要用JSON.stringify()來進行一個轉換。

否則,該數據不會以json類型傳輸,而以x-www-form-urlencoded類型的數據傳輸。

1.2 后端controller

@RequestMapping中要用consumes="application/json",在取參數時要用@RequestBody。

 

2 傳輸json的例子

2.1 前端ajax

function submitFormData() {
var jsonVar = JSON.stringify($('form').serializeJSON());

$.ajax({
//幾個參數需要注意一下
type: "POST",
dataType: "json",
contentType: "application/json",
url: "/yunapp/task" ,
data: jsonVar,
success: function (result) {
console.log(result);//打印服務端返回的數據(調試用)
if (result.resultCode == 200) {
alert("SUCCESS");
}
;
},
error : function() {
alert("異常!");
}
});
}


2.2 后端controller

@ResponseBody
@RequestMapping(value = "/task",
method = RequestMethod.POST,
consumes="application/json")
void handleTask(@RequestBody String jsonParamStr) {
if (jsonParamStr == null) {
return;
}
}

3 關於$.ajax的返回值

success: function (result) {

},

error: function(jqXHR, textStatus, errorThrown) {

}

如果返回的是json的話,那么result就是返回的json值。

 

4 ajax的本質

用JavaScript寫一個完整的AJAX代碼並不復雜,但是需要注意:AJAX請求是異步執行的,也就是說,要通過回調函數獲得響應。

在現代瀏覽器上寫AJAX主要依靠XMLHttpRequest對象:

use strict';

function success(text) {
var textarea = document.getElementById('test-response-text');
textarea.value = text;
}

function fail(code) {
var textarea = document.getElementById('test-response-text');
textarea.value = 'Error code: ' + code;
}

var request = new XMLHttpRequest(); // 新建XMLHttpRequest對象

request.onreadystatechange = function () { // 狀態發生變化時,函數被回調
if (request.readyState === 4) { // 成功完成
// 判斷響應結果:
if (request.status === 200) {
// 成功,通過responseText拿到響應的文本:
return success(request.responseText);
} else {
// 失敗,根據響應碼判斷失敗原因:
return fail(request.status);
}
} else {
// HTTP請求還在繼續...
}
}

// 發送請求:
request.open('GET', '/api/categories');
request.send();

alert('請求已發送,請等待響應...');

 

參考:

https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434499861493e7c35be5e0864769a2c06afb4754acc6000

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM