当前位置: 首页 > 面试题库 >

jQuery-将Ajax响应存储到全局变量中

彭宏义
2023-03-14
问题内容

我仍然是jQuery和ajax领域的新手,但是我有一个$
.ajax请求,执行GET来检索一些XML文件(〜6KB或更少),但是在用户花那个页面的时间内,XML内容应该不会/不会更改(此设计我无法更改,在我从其他地方读取XML文件时也无权更改它)。因此,我有一个全局变量将响应数据存储到该变量中,并且对该数据进行的所有后续查询都将在此变量上进行,因此不需要进行多个请求。

考虑到XML文件可以增加的事实,我不确定这是最佳实践,而且还来自Java背景,因此我对全局公共变量的想法通常是不可以的。

因此,我的问题是,是否可能有更好的方法来解决这个问题,以及如果文件扩展到某个可笑的文件大小,是否会引起任何内存问题?

我认为数据可以传递到xml对象内部的一些getter /
setter类型函数中,这可以解决我的全局公共变量问题,但仍然引发了一个问题,即我是否应该将响应存储在对象内部。

例如,我目前正在做的是:

// top of code
var xml;
// get the file
$.ajax({
  type: "GET",
  url: "test.xml",
  dataType: "xml",
  success : function(data) {
    xml = data;
  }
});
// at a later stage do something with the 'xml' object
var foo = $(xml).find('something').attr('somethingElse');

问题答案:

除了存储它,别无他法。内存分页应减少那里的潜在问题。

我建议不要使用名为“ 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');


 类似资料:
  • 问题内容: 目前,我正在使用一个大量的JavaScript,jQuery,Microsoft客户端JavaScript和其他库的旧网页。底线- 我无法从头开始重写整个页面,因为企业无法证明它的合理性。所以…就是这样。无论如何,我需要使用变量来污染(我确实没有尝试过)全局名称空间。我在考虑三个选项- 只需使用普通的JavaScript声明存储/检索它- 使用jQuery在DOM标签中存储/获取值-

  • 问题内容: 我遇到下面显示的行未将变量存储到全局范围的问题: 我究竟做错了什么?我需要将其包装到单独的函数中还是什么? 问题答案: 该代码在收到响应之前运行。 这就是为什么。 在这里,您可以看到警报发生故障。默认情况下,AJAX请求不会阻止后续代码运行。 这就是拥有 回调 方法的全部目的。该方法在适当的时间被调用,而不是依赖于同步执行。

  • 我试图理解将jwt存储在本地存储(倾向于xss)与cookie(倾向于csrf)的安全含义。我想了解如果我将jwt令牌存储在前端的应用状态中的安全性影响,就像在redux商店中一样。 编辑: 我试图了解有关存储代币的更多信息。似乎所有的文章和答案实际上都是在确定有两种方法可以做到这一点后开始讨论的,即cookie或浏览器存储。像这样一个相关的问题:在浏览器中的何处存储JWT?如何防范CSRF?像这

  • 我使用下面的命令来卷曲url,并显示选项提供的和 由于一些页面显示了基于cms的404,我想检查页面内容中的特定字符串,并在输出中显示: 所以我想真正的问题是,如何让显示他的输出,同时将响应主体保存到变量? 基于这个答案,我目前正在使用这个变通方法: 它捕获完整的输出,获取最后一行,其中包含信息,并使用获取剩余内容,即正文。 由于我希望输出(可选)是多行,因此我正在寻找一种更可靠的方法来实现这一点

  • 问题内容: 如何在代码后面创建可观察对象并生成下一个值?由于其他异步事件,我希望能够从代码的不同部分调用onNext。 这是我尝试过的,不起作用: 问题答案: 您需要的是某种主题。,,,等。 创建一个主题,然后可以订阅它。您也可以添加到流中。 例如: 一个更具体的用例(每次成功返回HTTP响应时,都会添加到可观察的流中): 正如另一位用户所说,如果您使用的是V5 ,请确保将所有设置都更改为。如果您

  • 问题内容: 大家好,我还是新手,我不知道如何使用全局变量。我想将“ this.props.topic.text”设置为全局变量,以在项目的其他应用程序上使用它。我怎样才能做到这一点 ? 问题答案: 这是一个可怕的想法,但是在React中使用全局变量的最好/最简单的方法是将其放在上。在组件中,您可以执行类似的操作,然后通过其他任何地方进行访问。 理想情况下,如果您有数据,并且在可能的状态下,需要在各