【问题标题】:AJAX make Array GlobalAJAX 使数组全局化
【发布时间】:2014-03-11 21:09:50
【问题描述】:

我正在尝试将返回 AJAX 的 XML 中的相应数据值存储到全局数组中,然后调用函数会从中删除一些元素,但这样做有问题。 数组不是全局的。 这是错误的代码。 感谢您的帮助。

var someArray=new Array();
function refreshPage() {
    downloadUrl("page.php", function(data) {
        markers = data.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {  
            var value=markers[i].getAttribute("Value");
            someArray.push(value);
        }
    });
    window.setTimeout("refreshPage()",5000);
}

function removeElement(value){
    someArray.slice(value,1);
}

function downloadUrl(url, callback) {
    var status = -1;
    var request = createXmlHttpRequest();
    if (!request) {
       return false;
    }
    request.onreadystatechange = function() {
    if (request.readyState == 4) {
        try {
          status = request.status;
        } catch (e) {
    }
    if (status == 200) {
       callback(request.responseXML, request.status);
       request.onreadystatechange = function() {};
    }
  }
}
request.open('GET', url, true);
  try {
    request.send(null);
  } catch (e) {
    changeStatus(e);
  }
};

【问题讨论】:

  • 首先将"downloadUrl("page.php, function(data) {" 改为"downloadUrl("page.php", function(data) {"
  • 您的意思是在您的setTimeout 中使用removeElement() 吗?
  • slice 获取数组的一个子集。它不会删除东西。范围似乎不是问题。
  • 对我来说看起来很全局,但你没有更改数组?
  • 您确定标记有数据吗? console.log(markers) 就在你定义它之后,console.log(value) 就在你定义它之后。你看到你所期望的了吗?示例 XML 也可能会有所帮助。

标签: javascript ajax arrays global


【解决方案1】:

您是否考虑过使用本地存储?

// Store
localStorage.setItem("lastname", "Smith");

// Retrieve
localStorage.getItem("lastname");

如果您想继续使用 ajax,请执行以下操作

var it_works = false;

$.ajax({
  type: 'POST',
  async: false,
  url: "some_file.php",
  data: "",
  success: function() {it_works = true;}
});

alert(it_works);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多