我是AJAX的新手,我正在尝试配置一种简单的方法,只使用ajax将数据发布到控制器中,因为我JSON
还不够
,lambda expressions
除了Java
之外,有人可以告诉我,我做错了这个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";
}
的Ajax /脚本
$(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值)显示正确。我只想将它们发送给我的控制器。请提出建议吗?
答案 0 :(得分:0)
首先,您需要让Controller
接受您的AJAX代码将发送的POST Request
。
然后你需要在POJO上添加一个RequestBody注释,你希望从AJAX中接受它。
假设您需要发送var x, y
。创建一个这样的类:
public class MyData {
String x;
String y;
// getters/setters/constructor
}
然后你需要在你的AJAX Call&中创建MyData。通过它。
$(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;
}
我的知识有点生疏,但我希望你知道这是如何工作的!