AJAX傳送GET、POST、DELETE、PUT請求到伺服器
阿新 • • 發佈:2019-02-16
$.ajax({})
設定contentType
引數值為 'application/x-www-form-urlencoded;charset=UTF-8'
(不設定contentType引數值也是這種也是這中情況)
- 傳送GET、POST請求只需要設定
type
引數值為對應的'get'
、'post'
即可。 - 傳送DELETE、PUT請求時
- 先需要在web.xml配置檔案中新增一個將post請求轉換為delete或put請求的filter,程式碼見下方
- 前端
$.ajax({})
中設定type
引數值為'post'
,然後在請求引數中加一個引數,引數鍵是_method
,引數值是'delete'
'put'
以發DELETE請求為例,前端程式碼:
$.ajax({
type : 'post',
data : {'_method':'delete','dbId':node.dbId,'schemaName':node.schemaName,'date':new Date()},
dataType : 'json',
url : '${ctp}/IndexOperate/Index/1',
success : function(data,textStatus,jqXHR){
console.log(data);
}
});
後端處理器程式碼:
@RequestMapping(value="/Index/{indexId}",method=RequestMethod.DELETE)
@ResponseBody
public int delIndex(@PathVariable(value="indexId")int indexId,
@RequestParam(value="dbId")int dbId,
@RequestParam(value="schemaName",required=false)String schemaName) {
int result = indexService.deleteIndexById(indexId,dbId,schemaName);
return result;
}
將post請求轉換為delete或者put請求的filter
<!-- 將post請求轉換為delete或者put請求 -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>springDispatcherServlet</servlet-name>
</filter-mapping>
注意:
在此情況下,若前端$.ajax({})
中設定type
引數值為 'delete'
,請求會到達後端對應的處理器方法,但是接收的引數會為null,具體情況見我的另一篇文章:傳送DELETE或PUT請求時springmvc獲取引數為NULL
$.ajax({})
設定contentType
引數值為 'application/json;charset=UTF-8'
此種情況一般發生在將請求引數以json資料的形式傳送到後臺,傳送GET、POST、DELETE、PUT請求只需要設定 type
引數值為對應的 'get'
、'post'
、'delete'
、'put'
即可。
以傳送delete請求為例,前端程式碼:
$.ajax({
type : 'delete',
data : JSON.stringify(recordInfo),
url : '${ctp}/TableOperate/UserTableRecord',
contentType : 'application/json;charset=UTF-8',
dataType : 'json',
success : function(data,textStatus,jqXHR){
console.log(data);
}
});
後端處理器程式碼:
@RequestMapping(value="/UserTableRecord",method=RequestMethod.POST)
@ResponseBody
public List<Message> batchAddRecord(@RequestBody Map<String,Object> recordInfo) {
System.out.println(recordInfo);
List<Message> msgs = new ArrayList<>();
return msgs;
}