Я отправляю данные JSON в Spring API, но всегда получаю неверный запрос. Я попробовал некоторые вещи. Сначала chanceReward
был типа 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.