如何修复 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 以接收您的请求。