Я пытался использовать @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.info(data.entity);
}
}).done(function(data) {
console.info(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, но я получаю неопределенность.




Похоже, вы отправляете идентификатор в качестве тела вашего запроса. Это означает, что вам нужно, чтобы ваш метод deleteUser получал тело в качестве параметра.
Я предлагаю вам УДАЛИТЬ с определенного URL-адреса, например http://локальный:3000/пользователи/{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.info(data.entity);
}
}).done(function(data) {
console.info(data.entity)
}
);
@Renzchler Когда вы используете @QueryParam("id"), вам нужно передать ключ и значение в качестве параметра URL-адреса, а не в виде тела, добавив ?key=value к URL-адресу. Итак, ваш исходный запрос ajax должен был выглядеть так: "http://localhost:3000/delete-users?id = " + $("#deleteUserIdInput").val()
Я думаю, вы не можете получить ценность, может быть, это servre cors。 вы можете настроить корс?
первый запрос может получить значение для запроса на удаление, на самом деле запрос на удаление является cors Virtual requst, ajax подтверждает, что ваш сервер в порядке, может ли ajax продолжить отправку agin.
вы можете изменить почтовый запрос, а на сервере изменить сообщение, чтобы получить ваш запрос.
Да, братан, я правильно настроил конфигурацию CORS, и единственный метод, который не работает, — это DELETE, но теперь он работает XD. Спасибо за помощь!
я вижу, вы вставляете javascript, значение получения сервера не определено, может быть, значение отправки вашего скрипта не определено, а не проблема с сервером。
вы можете изменить запрос на отправку скрипта, а запрос сервера получить тело метода @parthPathVariable и тело данных скрипта json{"you PathVariable value":"value"}.
Это сработало. Сначала я попробовал @PathVariable перед другими аннотациями, и это не работает, но теперь оно работает. Я не знаю, почему XD. Спасибо за помощь!