如何修复 Spring 引导控制器从 AJAX DELETE 请求中获取空数据?
How to fix Spring boot controller getting null data from AJAX DELETE request?
我尝试使用@QueryParam、@PathVariable 和@RequestParam,但我的控制器没有从 AJAX 调用中获取数据请求。我对其他方法采用相同的方法。只有 DELETE 请求不起作用,我得到的是空值。我已经提到这个 但它对我不起作用。
//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,但我得到的是未定义的。
您似乎将 ID 作为您的请求正文发送。这意味着您需要让 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)
}
);
我想,你的取不到值,可能是servre cors。
你能配置 cors 吗?
第一个请求可以获取删除请求的值,实际上删除请求是cors虚拟请求,ajax确认你的服务器没问题,可以ajax继续发送agin。
您可以更改 post 请求,并在服务器中更改 post 以接收您的请求。
我尝试使用@QueryParam、@PathVariable 和@RequestParam,但我的控制器没有从 AJAX 调用中获取数据请求。我对其他方法采用相同的方法。只有 DELETE 请求不起作用,我得到的是空值。我已经提到这个
//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,但我得到的是未定义的。
您似乎将 ID 作为您的请求正文发送。这意味着您需要让 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)
}
);
我想,你的取不到值,可能是servre cors。 你能配置 cors 吗?
第一个请求可以获取删除请求的值,实际上删除请求是cors虚拟请求,ajax确认你的服务器没问题,可以ajax继续发送agin。
您可以更改 post 请求,并在服务器中更改 post 以接收您的请求。