【问题标题】:400 bad request ajax post request400 错误请求 ajax 发布请求
【发布时间】:2015-12-09 15:10:29
【问题描述】:

我遇到了一个奇怪的问题,我想使用以下代码在 AJAX 中执行 POST 请求:

$('.login-form').on('submit', function(e) {
    e.preventDefault(); // to block the behavior from HTML form
    $.ajax({
        type: "post",
        url: "http://localhost:8080/login",
        data: JSON.stringify({
            username:"lmezkml",
            password:"ezaezaeza"
        }),
        success: function(data, textStatus, jqXHR) {
            console.log('success');
        },
        contentType: "application/json; charset=utf-8",
        dataType: 'json'
    });
});

即使在关注了这个问题的多个主题之后,我仍然遇到了麻烦。 例如,我尝试过:

  • 添加dataType: 'json'
  • 添加contentType : "application/json; charset=utf-8"
  • 使用XMLHttpRequest()
  • 使用$.post

Chrome 的检查员给我:

Remote Address:127.0.0.1:8080
Request URL:http://localhost:8080/login
Request Method:POST
Status Code:400 Bad Request
**Request Headersview source**
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,fr;q=0.6
Connection:keep-alive
Content-Length:45
Content-Type:application/json; charset=UTF-8
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/login
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
**Request Payloadview source**
{username:lmezkml, password:ezaezaeza}
password: "ezaezaeza"
username: "lmezkml"
**Response Headersview source**
Connection:close
Content-Type:application/json;charset=UTF-8
Date:Wed, 09 Dec 2015 14:39:11 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked

这是我的服务器代码:

@RequestMapping(value="/login", method=RequestMethod.POST, produces={"application/json"}, consumes={"application/json"})
public ResponseEntity<?> hello(@RequestParam("name") String username, @RequestParam("password") String password) {
    System.out.println("username : " + username + " password : " + password);
    try {
        LdapContext ctx = ActiveDirectory.getConnection(username, password);
        ctx.close();
    }
    catch(Exception e) {
        //Failed to authenticate user!
        e.printStackTrace();
        return new ResponseEntity<>(null, HttpStatus.UNAUTHORIZED);
    }
    return new ResponseEntity<>(null, HttpStatus.OK);
}

希望它能帮助解决我的 400 bad request 问题。

提前致谢。

【问题讨论】:

  • 你在服务器上调试过,看看400的确切原因是什么吗?我的猜测是您正在发送一个 JSON 字符串,而服务器正在等待一个查询字符串。
  • 发送数据而不进行字符串化。
  • @Jai 我已经尝试过不使用 stringify,它不起作用
  • @RoryMcCrossan 我已经用服务器端路由更新了我的主题

标签: javascript jquery json ajax post


【解决方案1】:

我认为,服务器上的问题。

尝试发送到服务器 js 对象,而不是字符串,或者在服务器中调试。

【讨论】:

  • 尝试发送到服务器 js 对象,而不是字符串我不知道这种语言,但我认为你使用 req 参数,而不是正文。在查询中发送您的数据( localhost:3000/api/login?name="Alex"&password="qwerty")或在请求正文中接收服务器上的数据
【解决方案2】:

感谢 Alex Repeckiy,我解决了我的问题。真正的问题是数据存储在 Body 中,我试图通过参数获取它们。

如果它可以帮助 Spring Framework 用户,我会使用 @RequestBody 而不是 @RequestParam 来更改我的功能。

谢谢!

【讨论】:

    猜你喜欢
    • 2015-03-10
    • 2018-12-05
    • 1970-01-01
    • 2018-10-08
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    相关资源
    最近更新 更多