我在春天创建了一个POST休息控制器。我想从ajax调用中调用这个控制器。
@RequestMapping(value = "/getAdzAcrVehicle")
@RestController("AdzoneAcrVehicle")
public class AdzoneAcrVehicleController {
private static Logger LOG = Logger.getLogger(AdzoneAcrVehicleController.class.getName());
private String jsonresponse;
@Autowired
@Qualifier(value="AzoneAcrVehicleService")
private AzoneAcrVehicle azoneAcrVehicle;
@RequestMapping(method = RequestMethod.POST)
public String getAll(@RequestBody ObjectNode json) {
System.out.println(json);
return json.get("vehicle").asText();
}
}
我试图通过使用以下提供的所有解决方案来调用该控制器,但我收到400 Bad request或415 Unsupported Media type error。
1)
var parameter = JSON.stringify({vehicle:datas[3]});
$.ajax({
url: appName+'/getAdzAcrVehicle',
type: 'post',
dataType: 'json',
success: function (data) {
console.log(data);
},
data: parameter
});
2)
$.ajax({
type: 'post',
url: appName+'/getAdzAcrVehicle',
data: JSON.stringify(parameter),
contentType: "application/json; charset=utf-8",
traditional: true,
success: function (data) {
console.log(data);
}
});
答案 0 :(得分:1)
由于它是@RestController
,因此不需要@ResponseBody
。 https://stackoverflow.com/a/25242458/6677551
您可以指定内容类型。
var parameter = JSON.stringify({vehicle:datas[3]});
$.ajax({
url: appName+'/getAdzAcrVehicle',
type: 'POST',
dataType: 'json',
contentType: 'application/json'
success: function (data) {
console.log(data);
},
data: parameter
});
答案 1 :(得分:0)
你在方法中忘记了responseBody
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String getAll(@RequestBody ObjectNode json) {
System.out.println(json);
return json.get("vehicle").asText();
}