2012-12-03 2 views
0

jQuery를 Spring MVC 애플리케이션에 통합했다. 내 JSP 페이지에서 양식을하고 난 컨트롤러에 양식을 보내 아약스 POST를하고있는 중이 야 :Spring MVC 컨트롤러에서 JQuery 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; 
       }); 

성공 기능은 새 탭에 데이터를로드합니다. 내가 아는 것은 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; 
} 

감사 :

여기 내 컨트롤러 코드입니다!

+1

브라우저에서 Firebug 또는 Developer Tools를 사용하여 AJAX에서 올바른 URL을 요청하고 올바른 데이터가 '데이터'를 통해 전송되고 있는지 확인할 수 있습니까? 또한 컨트롤러에서 디버그하여 요청이 특정 메서드에 적용되도록 할 수 있습니까? 그리고 당신의 "newSearch"보기가 당신이 기대하는 것을 가리키고 있습니까? AJAX 호출에'cache : false'를 추가 할 수도 있습니다. – Ian

+0

컨트롤러에 중단 점을 추가 했으므로 정확한 데이터를 확실히 수신하고 있습니다. Firebug를 사용하여 ajax 호출을 디버깅 한 후 데이터에 원래 페이지의 html이 포함되어 있음을 알 수 있습니다. 나는 캐시를 추가하려고 시도했다 : false 그러나 나는 어떤 차이도 볼 수 없다. ... – littleK

답변

0

예 컨트롤러에서 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...); 
} 
} 
}); 
} 

난 당신이 당신이의 SearchResult을 렌더링 할 수 돌아가 HTML 자체와 JSP 페이지를 반환 첫 번째 방법을 사용하는 것이 좋습니다 것입니다 귀하의 요구 사항을 보면.

+0

나는 이것을 시험해 보았지만, 나는 이런 식으로 어떤 데이터도 얻지 못하고있다. $ .each 함수에 중단 점을 추가했는데 도달하지 못했습니다. – littleK

관련 문제