2014-11-07 3 views
5

У меня есть ajax на странице jsp, которая вызывает контроллер весны по адресу /check.Как я могу получить данные от контроллера весны ajax?

$.ajax({ 
    type : "GET", 
    url : "${pageContext.request.contextPath}/check", 
    data : { 
    "id" : ${articleCount} 
    }, 
    success: function(data){ 
    //response from controller 
    } 
}); 

Теперь контроллер выглядит,

@RequestMapping("/check") 
public String check(@RequestParam Integer id, HttpServletRequest request, 
     HttpServletResponse response, Model model) { 
    boolean a = getSomeResult(); 
    if (a == true) { 
     model.addAttribute("alreadySaved", true); 
     return view; 
    } else 
     model.addAttribute("alreadySaved", false); 

    return view; 
} 

Я послал данные, используя модель и попытался получить к нему доступ в success: function(data) как "${alreadySaved}" но он показывает пустой.

Есть ли способ получить это сообщение true/false на странице с видом?

ответ

5

Вы должны добавить @ResponseBody аннотации к весенней AJAX вызывает пример

@RequestMapping("/check")  
@ResponseBody 
public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { 
    boolean a = getSomeResult(); 
    if (a == true) { 
     model.addAttribute("alreadySaved", true); 
     return view; 
    } else { 
     model.addAttribute("alreadySaved", false); 
     return view; 
    } 
} 
+0

Хорошо. Как я могу получить ответ на стороне обзора? – Sujan

+0

data.alreadySaved – Madhesh

+0

data.alreadySaved показывает undefined в jsp. – Sujan

0

Контроллер часть

Вы должны добавить @ResponseBody аннотации к весенней AJAX вызывает пример

Просмотр Часть

$.ajax({ 
    type : "GET", 
    url : "${pageContext.request.contextPath}/check", 
    data : { 
     "id" : ${articleCount} 
    }, 
    success: function(data){ 
     $('#input_field').val(data); 
    } 
}); 
0

Когда вы пытаетесь вернуть значения f выполните запрос ajax, вы должны использовать аннотацию @ResponseBody. Поскольку тип возвращаемого метода равен String, убедитесь, что вы вернули строковое значение, а не ваше представление в jsp.

Поскольку он будет оказывать СПЯ снова ответ

@ResponseBody 
public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { 
    boolean a = getSomeResult(); 
    if (a == true) { 
     return "already saved"; 
    } 
    return "error exist"; 
} 

И в вашем JSP,

success: function(data){ 
    alert(data); 
} 
+0

Но мне нужно вернуть представление из этого метода, потому что без этого весна не сможет загрузить jsp. – Sujan

+0

@najus Нет концепции ajax для обновления части страницы, чтобы ее было достаточно, чтобы отправить только возвращаемое значение. Когда вы загружаете ту же страницу –

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