Как очистить хитрый файл JSON с сервера - PullRequest
0 голосов
/ 25 июня 2010

Я пытаюсь использовать JSON-ленту с нашего сайта, которая, к сожалению, не отформатирована правильно. Я могу очистить канал, сначала вызвав его с помощью вызова $ .ajax, но хочу иметь возможность передавать этот очищенный контент обратно для итерации, как будто это объект JSON.

$(document).ready(function()
{
    // use ajax call as json supplied needs cleaning first
    $.ajax({
        url: 'JSON.txt',
        success: function (data)
        {
            var i = 0;
            var html = '';
            var regex = /<!--.+?-->/g;
            responseText = data.replace(regex,'');  // clean up Jahia's dodgy JSON output
            $('body').append(responseText);
        }
    });
});

Есть идеи, как вернуть responseText обратно как объект JSON, чтобы я мог использовать функцию $ .each для разбора файла?

Ответы [ 3 ]

1 голос
/ 25 июня 2010

Поскольку вы уже используете jquery, используйте jQuery.parseJSON () , чтобы преобразовать строку в объект JSON.

0 голосов
/ 25 июня 2010

Вы не можете ничего вернуть из тела большинства функций обратного вызова AJAX, потому что они асинхронные. После того, как вы отформатировали строку JSON, вы можете превратить ее в объект JSON, провозгласив ее (технически это плохо, но это то, как вы можете превратить строку в объект), а затем передать ее другой функции в качестве параметра. Так что-то вроде этого:

var newJSON = eval(responseText);
handleJSON(newJSON);

Где handleJSON должен быть функцией, которую вы определили в другом месте кода, который знал, как обрабатывать ответы, которые вы получите.

0 голосов
/ 25 июня 2010

Вы можете использовать библиотеку json для преобразования текстовой строки в объект json.

Библиотека: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Документация: http://www.json.org/js.html

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