【发布时间】: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