我正在尝试使用jQuery Ajax删除记录并调用RESTful服务。但是当我执行时,我收到错误
The specified HTTP method is not allowed for the requested resource
(Method Not Allowed).
这可能是什么原因?
REST服务代码
@Path("/employee")
@DELETE
@Path("/{empNo}")
@Produces(MediaType.APPLICATION_JSON)
public void remove(@PathParam("empNo") short empNo) {
getEmployeeService().delete(empNo);
}
jQuery ajax代码
$(document).ready(function () {
var empNo = 9870;
$("#btnSubmit").click(function () {
$.ajax({
url: "http://localhost:8181/Test1/rest/employee",
type: "POST",
data: JSON.stringify(empNo),
contentType: "application/json; charset=utf-8",
dataType: "json",
})
});
});
答案 0 :(得分:4)
使用DELETE
类型并将empNo
与url
一起传递。由于删除方法只需要empNo,因此不需要数据,dataType。
$(document).ready(function () {
var empNo = 9870;
$("#btnSubmit").click(function () {
$.ajax({
url: "http://localhost:8181/Test1/rest/employee/" + empNo, // Pass empNo
type: "DELETE", // Use DELETE
// data: JSON.stringify(empNo), Commented these two.
// dataType: "json",
})
});
});
答案 1 :(得分:1)
您尚未在网址
中指定empno将网址更改为:http:// localhost:8181 / Test1 / rest / employee / 9870
答案 2 :(得分:1)
为什么类型不是DELETE?
另外,为什么员工编号不是路径的一部分,因为您将其指定为具有@Path属性的路径的一部分?
答案 3 :(得分:1)
DELETE用于删除由URI标识的资源。
成功删除后,返回HTTP状态200(OK)以及响应正文,可能是已删除项目的表示(通常需要太多带宽)或包装响应。要么是返回HTTP状态204(NO CONTENT)而没有响应正文。换句话说,建议的响应是204状态,没有正文,或JSEND样式的响应和HTTP状态200。
您还需要指定empNo作为网址的一部分
按如下方式修改代码并尝试
type: 'DELETE',
url: "http://localhost:8181/Test1/rest/employee" + '/' + empNo,