我正在将JSON数据发送到我的Spring API,但是我总是收到一个错误的请求。我已经尝试了一些东西。一开始chanceReward
是type Map<String, Object>
。后来我以为应该是,String
但是仍然有一个不好的要求。我研究并认为我需要consumes = "application/json"
注释,但结果是相同的。不知道该怎么办。以下是我的API的代码:
@RequestMapping(value = "/chance/{id}/saveChanceRewards", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
public @ResponseBody Map<String, Object> saveChanceRewards(@PathVariable("id") String id,
@RequestBody String chanceRewards) {
try {
JSONArray jsonArray = new JSONArray(chanceRewards);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject JObject = jsonArray.getJSONObject(i);
System.out.println(JObject.getString("name") + " " + JObject.getString("weight"));
}
} catch(JSONException e) {
_log.error("Error parsing JSON");
}
Map<String, Object> map = new HashMap<String, Object>();
// TODO
return map;
}
下面是ajax代码(在.jsp内部):
let arrayRewards = [];
// get the data from dynamic list of text fields
for (let i = 1; i <= chanceRewardCount; i++) {
arrayRewards.push({
name: $('#chanceRewardName' + i).val(),
weight: $('#chanceRewardWeight' + i).val()
});
}
let data = {'data': arrayRewards};
let jsonData = JSON.stringify(data);
$.ajax({
type: 'post',
dataType: "json",
data: data,
contentType: 'application/json',
url: "${home}/chance/${id}/saveChanceRewards",
method: 'post',
success: function(response) {
console.log('response', response);
},
error: function(err) {
console.log('error', err);
}
});
我正在使用Spring Framework 3.2.1。
400 Bad Request错误是HTTP状态代码,表示您发送到网站服务器的请求(通常很简单,例如加载网页的请求)在某种程度上不正确或已损坏,服务器无法理解。
这意味着服务器无法理解来自您的ajax的请求。
首先,更改@RequestBody String chanceRewards
为@RequestBody ChanceRewards chanceRewards
并定义ChanceRewards
和ChanceReward
分类。
class ChanceReward {
private String name;
private String weight;
// Getter Setter ...
}
class ChanceRewards {
private List<ChanceReward> data;
// Getter Setter ...
}
如果仍然失败,请尝试打开检查模式,然后单击“网络”选项卡以检查从ajax发送的请求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句