【问题标题】:Parameter is NULL on DELETE Request删除请求时参数为 NULL
【发布时间】:2016-11-09 00:59:38
【问题描述】:

我正在使用 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 调用之前记录了它。我不确定是什么导致参数被清除。

【问题讨论】:

  • 首先,它是dataType,而不是dateType,设置为JSON意味着服务器应该总是返回JSON
  • 感谢您的关注!但是,这仍然没有解决问题。调用 servlet 时,我仍然得到一个空值。而且,我期待 JSON 输出,这就是我处理消息的方式。我只是不确定为什么我无法获取参数来查看值。我以前使用过同样的方法,即使我传入了多个值并且我没有这个问题。它是否与 DELETE 而不是 POST 有关?
  • 原来问题出在 DoDelete 上。我将其更改为 DoPost 并获得了我的参数值。为什么 DoDelete 请求看不到我传入的参数?这类请求不能传入参数吗?

标签: javascript java ajax servlets


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    相关资源
    最近更新 更多