0

jQuery を Spring MVC アプリケーションに統合しました。JSP ページにフォームがあり、コントローラーにフォームを送信するために ajax POST を実行しています。

$("#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}

dataがページ HTML を返すのは正常ですか? 成功関数で ModelAndView オブジェクトを解析し、それを新しいタブ 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;
}

ありがとう!

4

1 に答える 1

0

はい、コントローラーから ajax 関数に html コンテンツを返すことができます。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...);
}
}
});
}

あなたの要件を見て、html自体を返す最初の方法を使用し、返すjspページをsearchResultsでレンダリングすることをお勧めします。

于 2012-12-04T05:47:14.960 に答える