Javascript JQuery发布到SpringMVC控制器并在success函数中解析结果
我已经将jQuery集成到SpringMVC应用程序中。我的JSP页面上有一个表单,我正在做一篇ajax文章,将表单发送给控制器:Javascript JQuery发布到SpringMVC控制器并在success函数中解析结果,javascript,jquery,ajax,spring,spring-mvc,Javascript,Jquery,Ajax,Spring,Spring Mvc,我已经将jQuery集成到SpringMVC应用程序中。我的JSP页面上有一个表单,我正在做一篇ajax文章,将表单发送给控制器: $("#myform").submit(function() { $.ajax({ type : 'POST', url : '/MyApp/search/searchResults',
$("#myform").submit(function() {
$.ajax({
type : 'POST',
url : '/MyApp/search/searchResults',
data : $(this).serialize(),
dataType: 'html',
success : function(data) {
$("#tabs-4").append(data);
}
});
return false;
});
success函数将数据加载到新选项卡中。我发现,data
返回我的原始页面(我从中提交)的HTML。相反,我希望能够解析从控制器返回的ModelAndView对象。例如:
${searchResults.searchStr}
数据
返回HTML页面是否正常?我是否可以在success函数中解析ModelAndView对象,然后将其传递给我的新tab div
这是我的控制器代码:
@RequestMapping(value = "/searchResults", method = RequestMethod.POST)
public ModelAndView searchResults(
@ModelAttribute(value = "search") SearchVO search,
BindingResult result) {
// Set the view and search object
ModelAndView mv = new ModelAndView("newSearch");
mv.addObject("searchResults", searchResults);
return mv;
}
谢谢 是的,您可以将html内容从控制器返回到ajax函数。如果您对在jsp中使用实例感兴趣,则必须将其序列化为json并发送。使用jquery可以在jsp上呈现它。比如说,
//Controller
public @ResponseBody<Class_name> search(...){
return searchResults;
}
//jsp
function renderResult(){
$.ajax({
url:'url',
dataType:'json',
...
..
success: function(data, status, xhr){
$.each(data, function(k, v){
$('#my_div').append(...k,v...);
}
}
});
}
//控制器
public@ResponseBody搜索(…){
返回搜索结果;
}
//jsp
函数renderResult(){
$.ajax({
url:'url',
数据类型:'json',
...
..
成功:功能(数据、状态、xhr){
$。每个(数据、函数(k、v){
$('my#u div')。追加(…k,v…);
}
}
});
}
根据您的需求,我建议您使用第一种方法,返回html本身,返回的jsp页面可以与搜索结果一起呈现。在您的浏览器中,您是否可以使用Firebug或开发人员工具验证AJAX请求的URL是否正确,以及发送的内容是否正确
数据
?另外,您是否可以在控制器中调试以确保请求进入该特定方法?您是否确定您的“新搜索”视图指向您期望的内容?您可能希望向AJAX callI添加cache:false
。我向控制器添加了一个断点,并且它肯定接收到了正确的数据。使用Firebug调试AJAX调用后,我可以看到数据包含原始页面的html。我尝试添加cache:false,但看不到任何不同rence…我尝试过这个方法,但我似乎没有以这种方式获取任何数据。我在$。每个函数中添加了一个断点,但从未到达该断点。