2013-11-14 4 views
4

Привет, используя пружину mvc + ajax. Я сделал ajax-вызов, передав идентификатор пользователя. И все идет хорошо, успешно возвращается в ajax, но когда я предупреждаю ответ, он просто показывает код страницы html. Пожалуйста, помогите мне разобраться с этой проблемой. Я думаю, что я не закодирован мой Аякса well.Help меня в правильном пути кодВозвращение ModelAndView в ajax spring mvc

Контроллера:

public @ResponseBody ModelAndView abc(HttpServletRequest httpServletRequest, 
     HttpSession session, ModelMap map){ 

     ModelAndView modelAndView = new ModelAndView("abcd.page", 
       "commandName", object); 
      return modelAndView; 

Ajax код:

 $(".userDetails").click(function() { 
      alert("clicked"); 
     var userId=$(this).parent().parent(). parent().find(".userId"). 
         text().trim(); 
      alert("userId :"+userId); 
      $.ajax({ 

      url : 'ABC.htm', 
      type : 'GET', 
      data: {userId:userId}, 
      beforeSend: function(xhr) { 
       xhr.setRequestHeader("Accept", "application/json"); 
       xhr.setRequestHeader("Content-Type", "application/json"); 
      }, 
      success : function(response) { 
       alert("success"); 
       alert(response); 
      }, 
      error : function(res) { 
       alert("error"); 
      }, 

     }); 

      return false; 
     }); 

Выход для предупреждения (ответ); является enter image description here

EDIT: Может ли один пожалуйста, скажите, почему Ajax дает содержание HTML на успех ... После многих изменений я сделал получать тот же сигнал.

Отредактировано снова: Я думаю, что у меня нет проблем в контроллере. Пожалуйста, предложите мне решение правильно закодировать мой аякс. Здесь ошибка. Как получить объект ModelAndView в ajax

+0

add dataType: 'json' Также читайте http://stackoverflow.com/questions/1673656/how-to-use-ajax-jquery-in-spring-web-mvc/1683289#1683289 –

+0

Спасибо за ур немедленный ответ , Даже это также не работает suresh –

+0

Хитам я сделал, как вы предлагаете. Его предупреждение («ошибка»); –

ответ

9

Вы не получаете объект ModelAndView в AJAX. Spring использует HandlerMethodReturnValueHandler экземпляров для обработки возвращаемого значения метода обработчика. Для ModelAndView используется ModelAndViewResolverMethodReturnValueHandler. Для @ResponseBody используется RequestResponseBodyMethodProcessor. Они проверяются в определенном порядке, а один для ModelAndView имеет более высокий приоритет. Поэтому, когда вы возвращаете ModelAndView, Spring добавит атрибуты модели к полному Model, а затем разрешит ваше имя вида, возможно, jsp и напишет ответ от этого jsp, давая вам некоторый HTML. Поскольку AJAX просто видит ответ от запроса, он увидит HTML.

Если вы хотите вернуть JSON, не возвращайте ModelAndView, верните объект модели напрямую или напишите JSON непосредственно на ответ самостоятельно.

Смежные вопросы