angularjs中$http模組POST請求request payload轉form data
這是我後臺SpringMVC控制器接收isform引數的方法,只是簡單的打出它的值: ?
1 2 3 4 5 6 7 8 |
@RequestMapping (method
= RequestMethod.POST)
@ResponseBody
public
Map<String, Object> save(
@RequestParam (value
= "isform" ,
required = false )
String isform) {
System.out.println( "isform
value: "
+ isform);
return
null ;
}
|
發現後臺沒有取到值
後邊我想到的第一種方案是在控制器方法引數里加requestbody來接收json引數,改成如下:
?1 2 3 4 5 6 7 8 |
@RequestMapping (method
= RequestMethod.POST)
@ResponseBody
public
Map<String, Object> save(
@RequestParam (value
= "isform" ,
required = false )
@RequestBody
String isform) {
System.out.println( "isform
value: "
+ isform);
return
null ;
}
|
接著我又對比了下以前的專案中,接收post請求的引數,發現一個有趣的現象,
下邊是Angular的預設請求頭,
$httpProvider.defaults.headers.post: (header defaults for POST requests)
Content-Type: application/json
$httpProvider.defaults.headers.put(header defaults for PUT requests)
Content-Type: application/json
其中Angular的post和put都是application/json,
而jquery的post請求的"Content-Type"預設為" application/x-www-form-urlencoded",於是我更改了angular的預設Content-Type, ?1 2 3 4 5 |
app.config( function
|