DELETE请求

时间:2016-11-09 00:59:38

标签: javascript java ajax servlets

我正在使用ajax发送删除请求,但我得到一个NULL值。我无法弄清楚我做错了什么。

这是我的ajax电话

(function() {

    $('#btnDelete').bind('click', function() {

      $.ajax({

        url: '/Project',
        type: 'DELETE',
        cache: false,
        dateType: 'json',
        data: {
          delProjId: $('#projectId').text(),
          nbRandom: Math.random().toString()
        },
        success: function(data) {
          if (data.message[0].error) {
            toastr.error(data.message[0].message);
          } else {
            toastr.success(data.message[0].message);
            console.log('success');
          }
        },
        error: function(request, status, error) {
          toastr.error(error);
        }

      });


    });

这是我的帖子请求

protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  response.setHeader("Content-Type", "application/json");
  String delProjId = request.getParameter("delProjId");
  System.out.println("Parm:" + delProjId);


}

服务器记录

Parm:null

java.lang.NullPointerException
	at com.projectRequest.models.Project.doDelete(Project.java:122)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:210)

目前设置为span元素。我尝试将值放在输入字段中,甚至在我传递它时在值周围添加JSON.stringify()。我仍然得到相同的结果,一个空参数。我在客户端看到了这个值,甚至在我执行ajax调用之前记录它。我不确定导致参数清除的原因。

1 个答案:

答案 0 :(得分:1)

只有 POST 请求在请求正文中具有作为实体的参数。您必须将其作为URL的一部分发送。

请参见RFC 2616:“ DELETE方法请求源服务器删除由Request-URI标识的资源”。

您可以通过URI传递参数,例如:

http://localhost/?path=/willbedeleted.txt