JQuery - 将 ajax 响应存储到全局变量中

标签 jquery xml ajax response

我在 jQuery 和 ajax 方面仍然是个新手,但我有一个 $.ajax 请求执行 GET 以检索一些 XML 文件(~6KB 或更少),但是在用户在该页面上花费的时间XML 内容不应该/不会改变(这个设计我不能改变,我也无权改变 XML 文件,因为我正在从其他地方读取它)。因此,我有一个全局变量,我将响应数据存储到其中,并且对数据的任何后续查找都是在这个变量上完成的,因此不需要发出多个请求。

考虑到 XML 文件可能会增加,我不确定这是最佳实践,而且由于有 Java 背景,我对全局公共(public)变量的看法通常是不行的。

所以我的问题是是否有更好的方法来执行此操作,以及如果文件扩展到一些荒谬的文件大小,这是否会导致任何内存问题?

我认为数据可以传递到 xml 对象内的一些 getter/setter 类型的函数,这将解决我的全局公共(public)变量问题,但仍然提出了我是否应该将响应存储在对象本身内的问题。

比如我目前做的是:

// 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');

最佳答案

这是一个可以很好地完成工作的函数。我无法获得上述最佳答案。

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");

关于JQuery - 将 ajax 响应存储到全局变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/905298/

相关文章:

javascript - 如何让textarea不另起一行?

javascript - 使用 Javascript 的 replace() 方法用 html 包装一个单词

javascript - 从父表中查找子表选择器 - jQuery

java - 在 Java ( Jaxb ) 中从 xsd 生成类

javascript - jquery获取请求错误

php - 简单的ajax onclick问题

java - Android应用程序错误: "unfotunatley Application has stopped"

java - 如果我有层次结构,如何处理 JAXB.newInstance?

jquery - $.ajax 和 JSON。解析错误未捕获的 SyntaxError : Unexpected token :

php - Json 编码从 Ajax 中给我 null,但从正常的 php 字符串中没有给我 null