2016-03-09 64 views
1

我有一个Spring MVC中的jQuery应用这种简单的JavaScript:数据在Ajax调用没有传递到控制器

 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,并为参数映射大小生成一个0。我原本用@RequestParam注解了方法,但是失败了,我找不到原因。我删除了,我看到ajax调用没有发送任何东西。

我已经尝试过JSON,Javascript对象和(在本例中)一串请求参数。我尝试过,没有传统。

我使用从一个jQuery回调函数里面调用这个函数得到这样的:

$.get(templateUrl).complete(callback); 

但是,为什么没有什么让我的控制器?

UPDATE如果我将它更改为GET,那么参数会在调用结束时添加,就像它们应该一切正常一样。

更奇怪的是,这是一个函数,之前被调用,它作为一个POST。功能相同。 (当然不同的URL和数据)但SAME功能。工作一次,然后看起来像失败了。有没有像我需要关闭一些插座?我在这里抓着稻草。

+0

您是否用[HttpPost]注释Controller Action? –

回答

0

您应该将数据作为关键值对传递给控制器​​。不包含等号。

例如不,

applicationId=977 

它应该是,

applicationId:977 

添加此为AJAX请求。

$.ajax({ 
     type: "POST", 
     url: theUrl, 
     traditional: true, 
     data: {applicationId : "Your application ID as a number"}, 
     complete: modelCallback, 
     fail : errorFunction 
}); 
+0

没有区别。 – mmaceachran

+0

你把这些数据放在两个鬼脸吗? –

相关问题