【问题标题】:Ajax POST Spring json wrong characterAjax POST Spring json错误字符
【发布时间】:2018-09-20 10:21:43
【问题描述】:

这是我的用户保存控制器。

@ResponseBody
@RequestMapping(method= RequestMethod.POST,consumes= {"application/json"})
@JsonDeserialize(as = Users.class)
public ResponseEntity addUser(@RequestBody String jsonUser){
    try{
       ///

    }catch (Exception e){
        ///
    }
        return ResponseEntity.ok(HttpStatus.OK);
}

这是我的 ajax 帖子

 var obj = '{'
            +'"name" : '+name+','
            +'"surname" : '+surname+','
            +'"username" : '+username+','
            +'"email" : '+email+','
            +'"password" : '+password+','
            +'}';

        $.ajax({
            url: "/users",
            method: "POST",
            data: JSON.stringify(obj) ,
            dataType: 'json',
            success: function (response) {
                console.log(response);

            },
        });

如果我使用邮递员发布,发布的数据是好的。但是如果我使用 ajax 发布,控制器会得到这个字符串

%22%7B%5C%22name%5C%22+%3A+asd%2C%5C%22surname%5C%22+%3A+asd%2C%5C%22username%5C%22+%3A+asd%2C%5C%22email%5C%22+%3A+asd%2C%5C%22password%5C%22+%3A+asd%2C%7D%22=

【问题讨论】:

  • 不要手动构建 JSON
  • 我做了,但同样的问题还在继续

标签: json ajax spring spring-boot


【解决方案1】:

Json.stringify 中传递javascript 对象而不是字符串。像这样的:

var obj = {
    name: name,
    surname: surname,
    username: username,
    email:  email,
    password: password
};

而不是

var obj = '{'
        +'"name" : '+name+','
        +'"surname" : '+surname+','
        +'"username" : '+username+','
        +'"email" : '+email+','
        +'"password" : '+password+','
        +'}';

由于您已经在Json.stringify 中传递了一个字符串,它会进一步转义双引号和其他字符。

【讨论】:

    猜你喜欢
    • 2016-01-21
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2014-01-28
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多