如何在应用程序启动时发出ajax请求并稍后使用结果? (JS)

时间:2018-11-28 17:30:24

标签: javascript jquery ajax

好吧,所以我有一个使用主干广告MVC框架的node js应用程序,它在启动时运行appView.js,以便获取我的应用程序所需的一些信息。

我遇到了这个问题,我需要向服务器请求一些信息,这些信息每次最终用户在drupal面板上进行更改时都会更改。

到目前为止,我每次用户进入促销页面时都会执行我的$ .ajax请求,这使浏览器花时间进行请求,处理信息并能够使用恢复的JSON构建模板。

我需要能够在appView.js文件上发出请求并保留结果,直到用户进入需要JSON数据的促销页面,然后我才能构建该页面。

promotionsView.js的一部分

render: function() {
        var self = this;
        EventsManager.trigger("showLoading");
        $.when(self.translatePromotions()).done(function(data){
            self.promotions = data.promotions;
            var promotions = self.promotions;
            if(self.promotions == undefined)
                var promotions = {};
            if (promotions.length > 0) {
                var data = {
                    promos: promotions,
                    error: false,
                    max_item: 3
                };
                self.$el.html(self.template(data));
                if (data.promos.length <= data.max_item) {
                    self.initRoyalSlider(RoyalSliderOptions.arrow);
                } else {
                    self.initRoyalSlider(RoyalSliderOptions.bulletsArrow);
                }
            } else {
                self.template = _.template(NotAvailableTemplate);
                self.$el.html(self.template());
                self.$el
                    .find(".promos-events-title")
                    .addClass("promos-title")
                    .attr("data-translate-id", "promotions-title");
            }
            self.bindImageError();
            EventsManager.trigger("hideLoading");
        });

    },

translatePromotions: function() {
        return $.ajax({
            type: "get",
            url: MainConf.BASE_DOMAIN_NAME + MainConf.BASE_PROXY + MainConf.BASE_URL + "/" + this.currentLang.toLowerCase() + "/rest/promotions.json",

        });
    }

因此,我再次需要能够在appView.js文件中提出请求,并且能够在促销页面上使用结果,而不必等待请求完成。

0 个答案:

没有答案