使用Spring MVC后端使jQuery GET很好玩

时间:2012-09-18 16:41:06

标签: java javascript jquery spring-mvc get

我有一个jQuery Web应用程序前端,我想对在Spring MVC上运行的Java后端进行GET / POST ajax调用。

以下是我想要的GET请求:

http://www.myapp.com/backend/doSomething?a=1&b=2

在服务器端,这是我的BackendController对象:

@RequestMapping(value = "/backend/doSomething", method = RequestMethod.GET)
public ModelAndView handleDoSomething(@RequestParam("a") String a,
    @RequestParam("b") String b) {

    ModelAndView mav = new ModelAndView();
    mav.setViewName("backend/SomeView");

    // process the request...

    return mav;
}

所以这是我到目前为止尝试过的jQuery:

$.get({
    url: "/backend/doSomething?a=???&b=???",
    success: function(data) {
    }
    ???
});

我已阅读jQuery $.get页面,我仍对以下几点感到困惑:

  1. 将查询字符串参数附加到url的{​​{1}}中的正确方法是什么?
  2. 将表单数据添加到GET s?
  3. 的正确方法是什么?
  4. 我发现POST函数需要三个参数:successdatatextStatus,但我看到的很多示例只列出jqXHR部分 - 你什么时候只通过data,什么时候通过它?
  5. data的{​​{1}}属性与其get参数之间有什么区别?
  6. 我的Spring后端是否需要进行任何特殊配置以便jQuery可以连接到它,或者jQuery根本不关心后端?
  7. 我已经尝试过查看这些内容,但似乎无法明确这些项目的定义。提前谢谢。

2 个答案:

答案 0 :(得分:3)

jQuery Get / Post Params

  1. 地址
  2. 数据 - 数据对象,您将存储查询字符串,如数据(即后置变量)
  3. 成功处理程序(不需要额外的参数,这就是您以不同格式看到它的原因)
  4. DataType - 从服务器返回的数据类型
  5. 仅供参考,我相信网址参数是唯一必需的参数。你的来电应该看起来像这样:

    $.get("/backend/doSomething", { a : a, b : b }, success: function(data) {
        // Perform Success code
    });
    

    顺便说一下,您还可以使用以下内容序列化表单以通过帖子传递:

    $('form').serialize()
    

    修改

    关于在使用jQuery $.get()$.post()时命名url,data和success参数,这是不可能的。这些函数是jQuery $.ajax()的简写版本。如果你打算做什么做长形式,那么使用get / post是没有意义的。如果你想指定params,那么使用像这样的ajax:

    $.ajax({
        url: "/backend/doSomething", 
        data: { a : a, b : b }, 
        success: function(data) {
            // Perform Success code
        }
    });
    

答案 1 :(得分:1)

一切都在那里......(我的意思是在jQuery API和互联网上。)

基本上你这样使用$.get

$.get('/backend/doSomething', // 1st argument: URL
  { a: 1, b: 2 }, // 2nd arg (optional): JS Object or String you want to pass
  function(data) { // 3rd arg (or 2nd in case data is missing) success callback
    alert('Success!'); // or sth else
});

回到你的问题:

  1. 只需将第二个参数传递给$.get
  2. 使用$.post代替它们(它们都是相似的,只是$.ajaxsee docs的包装。)
  3. 通常你只会使用第一个参数 - data,在JavaScript方法签名中不必匹配(说Java类)。如果您愿意,可以忽略参数:
  4. data作为$.get的第二个参数是您给控制器的输入参数,success: function (data)是响应输出(可能是@ResponseBody JSONified-by-Jackson对象)。我的意思是:

    function(data) {
      alert('Success! Data ' + data);
    }
    

    function(data, textStatus, jqXHR) {
      alert('Success!');
    }
    

    等同。

  5. 不,jQuery只是JavaScript库,它使事情变得更容易。只需使用它们就像在文档中写的一样。