0

我有一个 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. 将查询字符串参数附加到urlforGET的正确方法是什么?
  2. 将表单数据添加到POSTs 中的正确方法是什么?
  3. 我看到该success函数需要三个参数:data,textStatusjqXHR,但是我看到的许多示例仅列出了该data部分-您何时仅传递它data,何时传递所有三个参数?
  4. get' 的data属性和它的success: function (data) { ... }参数有什么区别?
  5. 我需要在我的 Spring 后端进行任何特殊配置,以便 jQuery 可以连接到它,还是 jQuery 根本不关心后端?

我试过查找这些,但似乎无法为这些项目获得明确的定义。提前致谢。

4

2 回答 2

3

jQuery 获取/发布参数

  1. 网址
  2. 数据 - 数据对象,您可以在其中存储查询字符串,如数据(即发布变量)
  3. 成功处理程序(不需要额外的参数,这就是您以不同格式看到它的原因)
  4. DataType - 期望从服务器返回的数据类型

仅供参考,我相信 url 参数是唯一必需的参数。您的 get 调用应该类似于以下内容:

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

顺便说一句,您还可以使用以下方式序列化表单以通过您的帖子传递它:

$('form').serialize()

编辑

$.get()关于在使用 jQuery和时命名 url、数据和成功参数$.post(),这是不可能的。这些函数是 jQuery 的简写版本$.ajax()。如果您无论如何都要做长表格,那么使用 get/post 是没有意义的。如果要指定参数,请使用 ajax,如下所示:

$.ajax({
    url: "/backend/doSomething", 
    data: { a : a, b : b }, 
    success: function(data) {
        // Perform Success code
    }
});
于 2012-09-18T16:45:15.243 回答
1

一切都在那里......(我的意思是在 jQuery API 和 Internet 中。)

基本上你$.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(它们都相似,只是包装$.ajax请参阅文档)。
  3. 通常您只会使用第一个参数 - data,在 JavaScript 方法签名中不必匹配(类似 Java)。如果您愿意,可以忽略参数:
  4. data作为第二个参数$.get是您提供给控制器的输入success: function (data)参数,并且是响应输出(可能是@ResponseBodyJSONified-by-Jackson 对象)。我是说:

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

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

    是等价的。

  5. 不,jQuery 只是让事情变得更简单的 JavaScript 库。就像在文档中写的那样使用它们。

于 2012-09-18T16:55:46.500 回答