2016-04-23 106 views
0

我是AJAX的新手,我試圖配置一個簡單的方法發佈數據到控制器使用ajax只因爲我不夠JSON ,lambda expressionsJava以外有人可以告訴我是什麼錯誤,我正在做這個Ajax方法不工作?發佈ajax數據到彈簧控制器

控制器

@RequestMapping(value = "/test", method = RequestMethod.GET) 
public String addCart(int val1, int val2) { 
    System.out.println("+++++++++++++++++++++++++++++" + val1); 
    System.out.println("+++++++++++++++++++++++++++++" + val2); 

    return "redirect:/viewResult"; 

} 

阿賈克斯/ SCRIPT

$(document).on('change', '._someDropDown', function (e) { 
     var x = this.options[e.target.selectedIndex].text; 
     var y = $(this).data('idtest'); 
     alert(x); 
     alert(y); 

    $.ajax(
     { 
     url: "/HRS/test", 
     data: {val1: x, val2: y}, 
     method: 'POST' 
     }); 
    }); 

注意,這些警報(x和y值)顯示correctly.I只想將它們發送到我的控制器。請提出任何建議?

回答

0

首先,您需要讓您的Controller接受您的AJAX代碼將發送的POST Request

然後,您需要在POJO上添加一個RequestBody註解,您希望接受來自AJAX的註解。

假設您需要發送var x, y。創建一個類是這樣的:

public class MyData { 
    String x; 
    String y; 
    // getters/setters/constructor 
} 

然後,你需要在你的Ajax調用&通創建邁德特它。

$(document).on('change', '._someDropDown', function (e) { 
var myData = { 
    "x" : this.options[e.target.selectedIndex].text, 
    "y" :$(this).data('idtest') 
} 
.ajax({ 
    type: "POST", 
    contentType : 'application/json; charset=utf-8', 
    dataType : 'json', 
    url: "/HRS/test", //assuming your controller is configured to accept requests on this URL 
    data: JSON.stringify(myData), // This converts the payLoad to Json to pass along to Controller 
    success :function(result) { 
    // do what ever you want with data 
} 
}); 

最後你的控制器會是什麼llike:

@RequestMapping(value = "/test", method = RequestMethod.POST) 
public @ResponseBody String addCart(@RequestBody MyData data) { 
    System.out.println(data.getX()); 
    System.out.println(data.getY()); 

    return something; 
} 

我的知識是有點生疏,但我希望你的想法是如何工作的!

+0

啊是的,我有一個很好的主意做了以上的事情。非常感謝你的時間 – Azela