【发布时间】: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