Преобразование возвращаемых данных AJAX в JSON - PullRequest
3 голосов
/ 07 июня 2011

Я пытаюсь получить данные в объекте JSON (который я проверял, правильно отформатирован) и вывести данные в консоль firebug.Я проверил JSON с помощью JSONLint (http://jsonlint.com/)) и знаю, что данные не возвращаются в объекте JSON, потому что когда я регистрирую его, он регистрируется как текст, а не как объект. Когда я смотрю на сообщение ajax, появляется вкладка JSON ион показывает объект, я просто не могу получить его по какой-то причине.

Мой вызов ajax

    $.ajax({
        url:'/coords/base',
        data: { type: obj.type, id: obj.id },
        dataType:'text',
        type:'get',
        async:false,
        success: function(data) {
            console.log(data);
        }
    });

Мои возвращаемые данные выглядят так:

    {   
        "1": {"name":"TEXT","coords":[        
            { "entry":3,"x":15,"y":15 }     
        ]}}

КогдаЯ устанавливаю вызов AJAX для переменной и добавляю .responseText; в конце вызова я могу получить текстовый возврат вызова AJAX. Я думал, что тогда я мог бы просто использовать $ .serialize () или $ .parseJSON (), нозатем я получаю сообщение об ошибке «необработанное исключение: синтаксическая ошибка, нераспознанное выражение».

Конечной целью будет получение содержимого из этого responseText и использование объекта JSON во всех моих файлах. Этот вызов должен выполняться синхронно, посколькуон загружает важные данные.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 07 июня 2011

Явно проинструктируйте jQuery обрабатывать ответ как текст:

$.ajax({
  // ...
  dataType: "text",
  // ...
});

После этого вы сможете получить строку JSON. Однако, если после этого вы планируете преобразовать его в значение JS, позвольте мне остановить вас: jQuery может сделать это автоматически. Если вы укажете от dataType до "json" или просто дадите интеллектуальному предположению jQuery, аргумент data, переданный функции success:, будет проанализированным объектом JSON.

1 голос
/ 07 июня 2011

почему бы не использовать $. GetJson ()

что эквивалентно

 $.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

, что вы должны быть в состоянии сделать следующее:

$.getJSON('file.json', function(data) {
$.each(data, function(i) {
       console.log(data[i]);
     });
    });

1012 * редактировать *

возможно, я неправильно понимаю проблему.

РЕДАКТИРОВАТЬ # 2 Возможно, этот вопрос поможет: Есть ли версия $ getJSON, которая не использует обратный вызов?

, который предлагает использовать это:

$.ajax({
    type: 'GET',
    url: 'whatever',
    dataType: 'json',
    success: function(data) { console.log(data);},
    data: {},
    async: false
});

что, конечно, похоже на то, что у вас есть, поэтому я чувствую, что мне нужно отступить назад и повторно проанализировать проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...