将ajax数据发布到spring控制器

时间:2016-04-23 16:39:19

标签: ajax spring jsp

我是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值)显示正确。我只想将它们发送给我的控制器。请提出建议吗?

1 个答案:

答案 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;
}

我的知识有点生疏,但我希望你知道这是如何工作的!