REST从jQuery删除:方法不允许错误

时间:2013-11-24 04:55:29

标签: java jquery ajax rest jersey

我正在尝试使用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",
        })
    });
});

4 个答案:

答案 0 :(得分:4)

使用DELETE类型并将empNourl一起传递。由于删除方法只需要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,