Ответ AJAX всегда равен 405

#javascript #java #ajax #spring #spring-mvc

#javascript #java #ajax #весна #spring-mvc

Вопрос:

У меня есть сообщение AJAX

 $.ajax({
        type: "POST",
        contentType: "application/json",
        url: "/rating/save",
        data: JSON.stringify(rating),
        dataType: "json",
        mimeType: "application/json",
        success: function (responseData) {
            console.log(responseData);
            window.location.href = "/welcome"
        },
        error: function (responseData) {
            console.log(responseData);
        }
    });
  

Контроллер

 @Controller
public class RatingController {
........
    @RequestMapping(value = "/rating/save",method = RequestMethod.POST)
        public ResponseEntity<Object> saveRating(@RequestBody List<RatingDTO> ratingDTO) {
            return new ResponseEntity<>(ratingService.save(ratingDTO),HttpStatus.OK);
        }
}
  

Каждый раз, когда я пытаюсь обработать ответ от контроллера, даже если нет исключения, я получаю

 status: 405
statusText: "error"
  

Ошибка говорит о том, что метод не разрешен, но сервис с этой конечной точки работает отлично.

Комментарии:

1. войдите в систему ResponseEntity<>(ratingService.save(ratingDTO),HttpStatus.OK) и проверьте значение

2. <200 OK,[Rating{id=53, score=2.2, stageOfApprove=0, comment='null', date=Thu Mar 14 09:30:13 EET 2019}],{}>

3. Попробуйте удалить mimeType: «application / json»,

4. Есть ли у вас Jackson в вашем classpath?

Ответ №1:

Вы должны установить POST через method атрибут:

 $.ajax({
  method: "POST",
  ...
  

Комментарии:

1. тот же результат, может быть, проблема в библиотеке, которую я использую? ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js

2. @TarasDanylchenko Вы пробовали это с последней версией jQuery?

3. Да, 3.3.1 — это последняя версия jQuery, я пробовал с этим code.jquery.com/jquery-3.3.1.min.js и получил тот же результат

4. @TarasDanylchenko ваш ajax выглядит хорошо, так что, может быть, вы сможете проверить, правильно ли отвечает сервер. Попробуйте какой-нибудь клиент, Postman или curl: curl -X POST <url>

5. Итак, проблема на стороне сервера. Проверьте журнал, возможно, вы найдете там проблему.