jquery – 将ajax数据存储到全局变量中

前端之家收集整理的这篇文章主要介绍了jquery – 将ajax数据存储到全局变量中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_0@
继续 JQuery – Storing ajax response into global variable

接受的解决方案不知何故对我不起作用.

$(document).ready(function() {
    var dataStore = (function(){
        var xml;

        $.ajax({
          type: "GET",url: "/?do=getcontentadm1n&category=homepage",dataType: "json",success : function(data) {
                        xml = data.html;
                alert(xml); // WORKS
                    }
        });

        return {getXml : function()
        {
            if (xml) return xml;
        }};
    })();

    var somevar = dataStore.getXml();

    alert(somevar); // UNDEFINED
});

还有其他解决方案吗?

谢谢.

解决方法

它是空的,因为在调用getXml时,ajax请求尚未完成,请记住ajax是异步的.解决它的一种方法是强制它同步:
$.ajax({
          async: false,type: "GET",success : function(data) {
                        xml = data.html;
                alert(xml); // WORKS
                    }
        });

回应评论

I want perform AJAX onclick,then store data.html for other mouse events

var dataStore = (function(){
    var html;
    function load(){
           $.ajax({
              async: false,success : function(data) { html = data.html; }
            });
    }
    return {
        load : function() { 
            if(html) return;
            load();
        },getHtml: function(){
             if(!html) load();
             return html;
        }
    }
})();

$(element1).click(function(){
    dataStore.load();
});

$(element2).click(function(){
    var html = dataStore.getHtml();
    // use html
});
原文链接:https://www.f2er.com/jquery/176607.html

猜你在找的jQuery相关文章