错误的AJAX请求发布到Spring API

Zik:

我正在将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。

karfai:

400 Bad Request错误是HTTP状态代码,表示您发送到网站服务器的请求(通常很简单,例如加载网页的请求)在某种程度上不正确或已损坏,服务器无法理解。

这意味着服务器无法理解来自您的ajax的请求。

首先,更改@RequestBody String chanceRewards@RequestBody ChanceRewards chanceRewards

并定义ChanceRewardsChanceReward分类。

class ChanceReward {

    private String name;

    private String weight;

    // Getter Setter ...

}

class ChanceRewards {

    private List<ChanceReward> data;

    // Getter Setter ...

}

如果仍然失败,请尝试打开检查模式,然后单击“网络”选项卡以检查从ajax发送的请求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用okHttp 4.将json数据发布到rest api时,响应代码为400的错误请求

Spring JPA在API请求中发布

使用qwest.js到goo.gl网址缩短程序api的AJAX发布请求

Ajax请求到Spring REST API 415错误

Spotify:发布到api /令牌提出了错误的请求,但可以在curl中工作

使用API密钥的Guzzle发布导致400错误请求

从Angular到Spring Rest API的POST请求

使用Python请求模块将文件发布到API

发布到API时第二次出现400(错误请求)

(400)尝试将简单值发布到API时出现错误请求

Spotify api axios反应发布请求403错误

尝试将某些信息发布到DRF API,但使用Python请求遇到403禁止错误

Python API发布请求URL返回错误

在XmlHttpRequest中使用FormData将数据发布到asp.net核心Web API时出现“ 400错误请求”

Axios对Firebase Auth REST API的发布请求产生400错误

Elasticsearch批量API发布请求中的NewLine错误

使用AJAX将变量发布到API(idibu)

基本的ajax,尝试将数据发布到本地api文件

发送ajax POST请求到restfull api

AJAX发布请求错误

尝试发布API请求

从Ajax到Spring MVC的请求。404错误

将标头发布到API(Wrike)请求

在 Ajax API 发布请求中获取 cookie - Laravel 5.6

我尝试请求发布但错误无效的 URI " / " Rest API

由于错误提示我必须提供请求正文,因此无法发布到商家 API

在“错误”中获取和发布请求结果:在我的 Spring Boot api 上“未找到”

使用 Python 请求将数据发布到 REST API

如何在 jQuery DataTable ajax 中将数据发布到 API?