我在带有jQuery应用程序的Spring MVC中有这个简单的javascript:
console.log("POST Variables:",postVariables);
$.ajax({
type: "POST",
url: theUrl,
traditional: true,
data: postVariables,
complete: modelCallback,
fail : errorFunction
});
控制台记录此信息:
POST Variables: applicationId=977
哪个是对的。我在我的控制器中有这个:
public HashMap<String, Object> getApplication(HttpServletRequest request) {
String applicationId = (String) request.getParameter("applicationId");
logger.error("ApplicationId:"+applicationId);
Iterator<?> it = request.getParameterMap().keySet().iterator();
logger.error("Begining parameters:"+request.getParameterMap().keySet().size());
这为String applicationId生成null,为参数map size生成0。我最初使用@RequestParam注释了该方法,但是失败了,我无法弄清楚原因。我删除了它,我发现ajax调用没有发送任何内容。
我尝试过JSON,Javascript Object和(在本例中)一个请求参数字符串。我尝试过和没有传统的。
我在jQuery get函数的回调函数中使用此调用,如下所示:
$.get(templateUrl).complete(callback);
但为什么没有到我的控制器那里?
UPDATE 如果我将其更改为GET,则会在调用结束时添加参数,就像它们应该的一样,并且一切正常。
更奇怪的是,这是一个函数,之前被调用,它作为POST工作。功能相同。 (当然是不同的URL和数据)但SAME功能。工作一次,然后看起来失败了。有没有像我需要关闭的插座?我在这里抓住稻草。
答案 0 :(得分:0)
您应该将数据作为键值对传递给控制器。不要使用等号。
例如,不,
5
它应该是,
applicationId=977
为ajax请求添加此内容。
applicationId:977