Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复从AJAX删除请求获取空数据的Spring引导控制器?_Java_Ajax_Spring Boot_Spring Boot Maven Plugin - Fatal编程技术网

Java 如何修复从AJAX删除请求获取空数据的Spring引导控制器?

Java 如何修复从AJAX删除请求获取空数据的Spring引导控制器?,java,ajax,spring-boot,spring-boot-maven-plugin,Java,Ajax,Spring Boot,Spring Boot Maven Plugin,我已经尝试使用@QueryParam、@PathVariable和@RequestParam,但我的控制器没有从AJAX调用中获取数据请求。我的其他方法也有相同的方法。只有删除请求不起作用,我得到的是空值。我提到过这一点,但它对我不起作用 //AJAX DELETE var id = {"id":$("#deleteUserIdInput").val()}; $("#deleteUserModal").modal("hide"); $.ajax({ url : "http://loc

我已经尝试使用@QueryParam、@PathVariable和@RequestParam,但我的控制器没有从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,但我没有定义。

看起来您正在将id作为请求的主体发送。这意味着您需要让
deleteUser
方法将主体作为参数接收

我建议您做的是从特定URL(即{id})中删除

相应的方法声明变为:

@DeleteMapping("/users/{id}")
@ResponseBody
public Integer deleteUser(@PathVariable("id") Integer id){
    return id;
}
您的JS需要修改(我认为-我不擅长JS)为类似(再次-我不是JS的家伙,如果这很糟糕,很抱歉!):


我想,你得不到的价值,可能是服务 你能配置cors吗

第一个请求可以获得删除请求的值,实际上删除请求是cors虚拟请求,ajax确认您的服务器正常,ajax是否可以继续发送


您可以更改post请求,并在服务器中更改post以接收您的请求。

它起作用了。我在其他注释之前先尝试过@PathVariable,但它不起作用,但现在它起作用了,我不知道为什么XD。谢谢你的帮助@Renzchler使用
@QueryParam(“id”)
时,需要将键和值作为URL参数传递,而不是作为主体,方法是将
?key=value
附加到URL。因此,您最初的ajax请求应该如下所示:
“http://localhost:3000/delete-users?id=“+$(“#deleteUserIdInput”).val()
Yes兄弟,我已经正确设置了CORS配置,唯一不起作用的方法是DELETE,但它现在起作用XD。谢谢你的帮助!我看到您粘贴了javascript,服务器get值未定义,可能是您的脚本发送值未定义,而不是服务器问题。您可以更改脚本post-requst,服务器requst-receive-mothod-body@parthPathVariable和脚本数据体json{“you-PathVariable-value”:“value”}。
$.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)
    }
);