2016-03-09 66 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

你把這些數據放在兩個鬼臉嗎? –

相關問題