@Pirojochek

Что сделать чтобы заработал JSON в jQuery (Spring)?

Доброго времени суток всем :)

Пытаюсь сделать запрос ajax JSON в jQuery, цель-получить коллекцию элементов, но почему-то он не возвращает ничего после success:function(data), перепробовала все браузеры и подключила библиотеки json, не помогло. Если dataType:text, то приходит код страницы с которой был отправлен запрос.

Я уже весь инет изучила на данную тему, но то что там предлагают у меня уже все есть, поэтому допускаю что возможно у меня что-то не установлено или установлено криво и из-за этого не работает. Возможно у кого-то была похожая проблемка, если кто-то сможет подсказать как исправить, буду благодарна за помощь:)
function getData(type) {
	  var pagelink = "getData/";
	   var url = pagelink +type+ ".html";
   $.ajax({
      url : url,
      method : "get",
   contentType:"application/json",
dataType : "json",
     async: false,  
   success : function(data) {
	   alert("success");}});

@RequestMapping(value = "/", method = RequestMethod.GET)
	 public String home( Model model) {
	  return "templeName";
	 }
	@RequestMapping(value = "/getData/{type}", method = RequestMethod.GET)
	  public @ResponseBody  List<String> showData(Model model, @PathVariable("type") String type) {
	    List<String> list= new ArrayList<String>(); 
	   list.add("2");
	    list.add("1");
	    return list;
  • Вопрос задан
  • 3533 просмотра
Решения вопроса 1
@Pirojochek Автор вопроса
Всем спасибо, решила вопрос, но не так как хотелось, но все же. Как оказалось на стороне сервера json запрос не формируется в том виде в котором нужно, это нужно делать вручную. Вот что получилось на стороне сервера
@RequestMapping(value = "/bean")
public class Controller {

    @RequestMapping(value = "/getData", method = RequestMethod.GET)
 public @ResponseBody String showData(Model model) throws JSONException{
	    	JSONArray userArray = new JSONArray();
	            JSONObject userJSON = new JSONObject();
	            userJSON.put("id", "1");
	            userJSON.put("firstName", "Name");
	            userJSON.put("lastName", "LastName");
	            userJSON.put("email", "Email");
	            userArray.put(userJSON);
	            return userArray.toString();
	    }}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
@bobzer
Java EE Developer
Скопировал Ваш код почти один-в-один, но проблему воспроизвести не удалось. Всё работает как и надо: указал text - получил строку, указал json - получил Array. Вот мой код:
var url = "bean/getData";
                    $.ajax({
                        url: url,
                        method: "get",
                        contentType: "application/json",
                        dataType: "json",
                        async: false,
                        success: function (data) {
                            alert(data);
                        }
                    });


@RequestMapping(value = "/bean")
public class Controller {

    @RequestMapping(value = "/getData", method = RequestMethod.GET)
    public
        @ResponseBody
        List<String> showData() {
        List<String> list = new ArrayList<String>();
        list.add("2");
        list.add("1");
        return list;
    }
}

Попробуйте скопировать как есть себе и добиться работоспособности. Используйте отладчик браузера для просмотра Сети и JS-исходников. Если заработает, пошагово добавляйте свою специфику, проверяя работоспособность после каждого изменения. Вполне вероятно, что Вы внесли изменения сразу в нескольких местах, и все сломалось вовсе не потому, что это было переключение на json. Я в своем примере просто меняю dataType между text и json и сразу получаю в data соответственно строку или массив.
Ответ написан
@Panda_Tamara
Разработчик проектов под UMI.CMS
а что у вас, собственно, отправляется обратно скрипту?))) Раз с text все работает, значит возвращаемый dataType не соответствует заявленному в скрипте
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
А вы знаете, что у вас из JS запрашивается адрес вида /getData/type.html, а сервер слушает адреса вида /getData/type?
Ответ написан
@Braidner
Попробуйте добавить в конфиг:
<mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы