![](/img/trans.png)
[英]jquery Ajax call - data parameters are not being passed to MVC Controller action
[英]Data in ajax call not being passed to controller
我在带有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());
这将为字符串applicationId生成null,并为参数映射大小生成0。 我最初用@RequestParam注释了该方法,但是失败了,我不知道为什么。 我删除了它,发现ajax调用没有发送任何内容。
我已经尝试过JSON,Javascript对象和(在此示例中)请求参数的字符串。 我尝试过有没有传统。
我在jQuery get函数的回调函数中使用此调用,如下所示:
$.get(templateUrl).complete(callback);
但是为什么什么都没到达我的控制器?
更新如果我将其更改为GET,则会在调用结束时像应有的那样添加参数,并且一切正常。
更奇怪的是,它在一个函数中,该函数之前被调用过,并且它作为POST起作用。 相同的功能。 (当然还有不同的URL和数据),但具有相同的功能。 工作一次,然后看起来就失败了。 是否有需要关闭的插座? 我在这里抓稻草。
您应该将数据作为键值对传递给控制器,而不是等号。
例如,不,
applicationId=977
它应该是,
applicationId:977
将此添加到ajax请求。
$.ajax({
type: "POST",
url: theUrl,
traditional: true,
data: {applicationId : "Your application ID as a number"},
complete: modelCallback,
fail : errorFunction
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.