POST-запрос не получает ответ от сервера в chrome, но работает в почтальоне - PullRequest
0 голосов
/ 15 января 2019

Я делаю POST-запрос для запуска конечной точки загрузки и хочу получить данные, возвращаемые с сервера. При тестировании моего API в Postman, он работает хорошо. Но при тестировании в chrome, он даже не получил ответа, а chrome NETWORK даже не имел записи. так что код прост, я не могу найти никаких проблем, RestController

 @PostMapping("/signup")
    public User signup(@RequestBody ModelUser user){
          //fetch data from DTO and craft a user
          User userData=user.adapter();
          //...code here omit for sake of brevity

          return userData;
    }

он действительно получает данные из ajax, когда я использую logger (slf4j) для отладки. и AJAX:

  $("#sign-up").submit(function () {
           var userInfo={}
           userInfo["phone"]=$("#phone").val()
           userInfo["password"]=$("#password").val()
           $.ajax({
               //ajax successful send to spring boot endpoint
               type:"POST",
               contentType:"application/json",
               url:"http://localhost:8080/signup",
               data:JSON.stringify(userInfo)
           }).then(
               function(){
                  //this doesn't print in console
                  console.log("Hello Callback is executed")
               }
           )
       })

Как ни странно, я никогда не сталкиваюсь с этим при использовании запроса GET, поскольку обратный вызов ajax успешно вызывается, когда я использую GET для проверки конечной точки GetMapping.

ох, с множеством похожих вопросов

Я не получаю никакого кода статуса ответа в chrome и совсем не задействован CORS в вопросе

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Прошу прощения за плохое умение в начале, главная причина в том, что я не понимаю событие Javascript.

$("#sign-up").submit(function (e) {
    //e.preventDefault();
    var user={};
    user["phone"]="187308";
    user["name"]="icywater";
    $.ajax({
        type:'POST',
        contentType:'application/json',
        data:JSON.stringify(user),
        url:"http://localhost:8080/test"

    }).done(function(data){
        console.log("Hello Callback is executed");
        console.log(data)
    });
});

здесь, когда я нажимаю "отправить". На самом деле он уже отправил форму и не ждет, пока будет выполнен код ajax, поэтому я должен использовать e.preventDefault() для подавления поведения по умолчанию. Это ничего что касается POST или почтальона, то речь идет о поведении формы по умолчанию, ах, событие Улун.

Я понял, когда нашел эту страницу

0 голосов
/ 16 января 2019

Вы пытались добавить потребителя и создать медиа-тип Json в Java

@PostMapping(path="/signup", consumes=MediaType.APPLICATION_JSON_VALUE, produces=MediaType.APPLICATION_JSON_VALUE)

И явно установить заголовок Accept в javascript

   $.ajax({
           //ajax successful send to spring boot endpoint
           type:"POST",
           headers: {Accept : "application/json"},
           contentType:"application/json",
           url:"http://localhost:8080/signup",
           data:JSON.stringify(userInfo)
       })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...