我有一个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页面,我仍对以下几点感到困惑:
url
的{{1}}中的正确方法是什么?GET
s?POST
函数需要三个参数:success
,data
和textStatus
,但我看到的很多示例只列出jqXHR
部分 - 你什么时候只通过data
,什么时候通过它?data
的{{1}}属性与其get
参数之间有什么区别?我已经尝试过查看这些内容,但似乎无法明确这些项目的定义。提前谢谢。
答案 0 :(得分:3)
jQuery Get / Post Params
仅供参考,我相信网址参数是唯一必需的参数。你的来电应该看起来像这样:
$.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
});
回到你的问题:
$.get
。$.post
代替它们(它们都是相似的,只是$.ajax
,see docs的包装。)data
,在JavaScript方法签名中不必匹配(说Java类)。如果您愿意,可以忽略参数: data
作为$.get
的第二个参数是您给控制器的输入参数,success: function (data)
是响应输出(可能是@ResponseBody
JSONified-by-Jackson对象)。我的意思是:
function(data) {
alert('Success! Data ' + data);
}
和
function(data, textStatus, jqXHR) {
alert('Success!');
}
等同。
不,jQuery只是JavaScript库,它使事情变得更容易。只需使用它们就像在文档中写的一样。