Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery发布到SpringMVC控制器并在success函数中解析结果_Javascript_Jquery_Ajax_Spring_Spring Mvc - Fatal编程技术网

Javascript JQuery发布到SpringMVC控制器并在success函数中解析结果

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',

我已经将jQuery集成到SpringMVC应用程序中。我的JSP页面上有一个表单,我正在做一篇ajax文章,将表单发送给控制器:

$("#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…我尝试过这个方法,但我似乎没有以这种方式获取任何数据。我在$。每个函数中添加了一个断点,但从未到达该断点。