在Ajax POST中弹出RestController的400个错误请求错误

时间:2016-03-08 12:52:20

标签: javascript ajax spring

我有ajax代码

/**
 * Ajax Logic for submitions
 * */
$.ajax({
    contentType : 'application/json; charset=utf-8',
    type: 'POST',
    url: '/domain/insert/',
    dataType : 'json',
    data : 'firstName:' + $("#first_name").val() /*+ "&lastName;=" + $("#lastName").val() + "&email;=" + $("#email").val()*/,
    success : function(callback){       
         console.log("Data inserted.........");
    },
    error : function(){
        console.log("Error.........");
    }
});

将控制台输出为

POST http://localhost:8080/domain/insert/ 400 (Bad Request)
Z.cors.e.crossDomain.send @ common.min.js:3
J.extend.ajax @ common.min.js:3
t.length.t.steps.onStepChanged @ forms_wizard.min.js:34
J.event.dispatch @ common.min.js:2
m.handle @ common.min.js:2
J.event.trigger @ common.min.js:2
J.fn.extend.triggerHandler @ common.min.js:2
(anonymous function) @ wizard_steps.min.js:1
c @ common.min.js:2
d.fireWith @ common.min.js:2
(anonymous function) @ common.min.js:2
c @ common.min.js:2
d.fireWith @ common.min.js:2
a @ common.min.js:2
c @ common.min.js:2
d.fireWith @ common.min.js:2
d.fire @ common.min.js:2
J.extend.dequeue @ common.min.js:2
i.complete @ common.min.js:2
c @ common.min.js:2
d.fireWith @ common.min.js:2
I.l @ common.min.js:1
J.fx.tick @ common.min.js:3
forms_wizard.min.js:47 
Error.........

我在RestController中的插入方法是

@RequestMapping(value = "/question/", headers="Accept=*/*", consumes="application/json", method = RequestMethod.POST)
    public ResponseEntity<Void> insert(@RequestBody User user) {
        System.out.println("Creating " + user.getFirstName()); 
        service.save(user);        
        return new ResponseEntity<Void>(HttpStatus.CREATED);
    }

好的,如果我使用Postman将数据发送到控制器,它就会成功但是通过上面的ajax代码我得到400错误......

2 个答案:

答案 0 :(得分:2)

您的data属性是问题

您需要在数据中传递json对象才能使其正常工作

data : {username: 'username'}

答案 1 :(得分:0)

想把它写成评论,但还不能...... 您的JQuery版本是什么?如果您使用Postman发布,您的设置是什么? 您是否也会提出请求和响应的网络请求? 尝试用括号括起数据:{'firstName:' ... }

我过去遇到了类似的问题(虽然没有弹簧),并且必须在控制器中将消耗设置为'application/json; charset=utf-8'(尽管Intellij将此标记为不正确)