2015-12-09 3 views
0

Я бег в странные проблемы, я хочу сделать запрос POST в AJAX с помощью следующего кода:400 плохого запроса Ajax пост запрос

$('.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 Ошибочного запроса.

Заранее спасибо.

+1

Вы отлаживали сервер, чтобы узнать, какая именно причина 400? Я предполагаю, что вы отправляете строку JSON, и сервер ожидает запроса. –

+0

Отправлять данные без подбора. – Jai

+0

@Jai я уже пробовал без stringify, он не работаю – DPheng

ответ

0

думаю, проблема на сервере.

Попробуйте отправить сервер js объект, а не строку или отлаживать на сервере.

+0

я редактировать мои темы с сервером коды на стороне – DPheng

+0

Постарайтесь отправить на сервер объект, расслоения плотного не струнной Я не знаю этого языка, но я думаю, что вы используете параметры req, а не тело. Отправьте свои данные в запрос (localhost: 3000/api/login? Name = "Alex" & password = "qwerty") Или полученные данные на сервере по запросу –

0

Я решил свою проблему благодаря Алексу Репекию. Реальная проблема заключалась в том, что данные хранились в Body, а ive пытались получить их по параметру.

Если это может помочь пользователям Spring Framework, я могу изменить свою функцию, используя @RequestBody вместо @RequestParam.

Спасибо!