JQuery - Хранение ajax ответ в глобальную переменную

Вместо

:include_blank => true

Попробуйте

:include_blank => "your text here"

, если это то, что вы ищете.

66
задан Yukulélé 5 July 2016 в 21:09
поделиться

5 ответов

Нет другого выхода, кроме как хранить. Подкачка памяти должна уменьшить потенциальные проблемы.

Я бы посоветовал вместо использования глобальной переменной с именем 'xml' сделать что-то вроде этого:

var dataStore = (function(){
    var xml;

    $.ajax({
      type: "GET",
      url: "test.xml",
      dataType: "xml",
      success : function(data) {
                    xml = data;
                }
    });

    return {getXml : function()
    {
        if (xml) return xml;
        // else show some error that it isn't loaded yet;
    }};
})();

, а затем получить к ней доступ с помощью:

$(dataStore.getXml()).find('something').attr('somethingElse');
34
ответ дан 24 November 2019 в 14:50
поделиться

По умолчанию ответы .get кэшируются. Поэтому вам действительно не нужно ничего делать, чтобы получить желаемый результат.

0
ответ дан 24 November 2019 в 14:50
поделиться

Я бы посоветовал избегать получения больших файлов XML с сервера: переменная «xml» должна использоваться как кеш , а не как само хранилище данных .

В большинстве сценариев можно изучить кэш и посмотреть, нужно ли делать запрос к серверу, чтобы получить нужные данные. Это сделает ваше приложение легче и быстрее.

Ура, младший.

0
ответ дан 24 November 2019 в 14:50
поделиться

IMO вы можете хранить эти данные в глобальной переменной. Но лучше будет использовать более уникальное имя или пространство имен:

MyCompany = {};

...
MyCompany.cachedData = data;

А также для этих целей лучше использовать json, данные в формате json обычно намного меньше, чем такие же данные в формате xml.

0
ответ дан 24 November 2019 в 14:50
поделиться

Вот функция, которая неплохо справляется со своей задачей. Я не смог заставить работать лучший ответ, приведенный выше.

jQuery.extend({
    getValues: function(url) {
        var result = null;
        $.ajax({
            url: url,
            type: 'get',
            dataType: 'xml',
            async: false,
            success: function(data) {
                result = data;
            }
        });
       return result;
    }
});

Затем, чтобы получить к нему доступ, создайте такую ​​переменную:

var results = $.getValues("url string");
68
ответ дан 24 November 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: