Как исправить загрузочный контроллер Spring, получающий нулевые данные из запроса AJAX DELETE? - PullRequest
1 голос
/ 26 марта 2019

Я пытался использовать @QueryParam, @PathVariable и @RequestParam, но мой контроллер не получает запрос данных от вызова AJAX. У меня такой же подход с другими моими методами. Только запрос DELETE не работает, и я получаю нулевое значение. Я упоминал этот метод удаления Ajax при весенней загрузке , но он не работает для меня.

//AJAX DELETE
var id = {"id":$("#deleteUserIdInput").val()};

$("#deleteUserModal").modal("hide");

$.ajax({
    url : "http://localhost:3000/delete-user",
    datatype : "json",
    method : "DELETE",
    data : id,
    contentType : "application/json",
    error:function(data){
        console.log(data.entity);
    }
}).done(function(data) {
        console.log(data.entity)
    }
);

//Controller
//http://localhost:3000/delete-user
@RequestMapping(value="/delete-user", method = RequestMethod.DELETE)
@ResponseBody
public Integer deleteUser(@QueryParam("id") Integer id){
    return id;
}

Я проверяю данные перед передачей в запрос, и они не равны нулю. Я ожидаю, что данные, переданные в запрос, будут возвращены, например, 1, но я получаю неопределенное значение.

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Похоже, вы отправляете идентификатор в качестве тела вашего запроса.Это означает, что вам нужно, чтобы ваш метод deleteUser получил тело в качестве параметра.

Я предлагаю вам удалить сообщение с определенного URL, т.е. http://localhost:3000/users/{id}

Соответствующий методобъявление становится:

@DeleteMapping("/users/{id}")
@ResponseBody
public Integer deleteUser(@PathVariable("id") Integer id){
    return id;
}

И вашему JS нужно будет изменить (я думаю - я не очень хорош в JS) что-то вроде (опять же - я не парень JS, извините, если это ужасно!):

$.ajax({
    url : "http://localhost:3000/users/" + $("#deleteUserIdInput").val(),
    datatype : "json",
    method : "DELETE",
    contentType : "application/json",
    error:function(data){
        console.log(data.entity);
    }
}).done(function(data) {
        console.log(data.entity)
    }
);
0 голосов
/ 26 марта 2019

Я думаю, вы не можете получить значение, может быть, это servors, вы можете сконфигурировать cors?

первый запрос может получить значение для запроса на удаление, фактически запрос на удаление - это cors Виртуальный запрос, ajaxcomfirm ваш сервер в порядке, может Ajax идти вперед отправить Agin.

вы можете изменить реквизит поста, и в сообщении изменения сервера, чтобы получить ваш реквизит.

...