gpt4 book ai didi

javascript - ajax 调用中使用的 javascript 中的全局变量

转载 作者:行者123 更新时间:2023-11-30 09:00:20 24 4
gpt4 key购买 nike

我在 file.js 中声明了一个全局变量 var idCategories= new Array();我在这个函数中使用它

function test() {
$.ajax({
type: "GET",
url: "http://my_site/api/categories?ws_key="
+ ws_key
+ "&PHP_AUTH_USER=" + PHP_AUTH_USER,
dataType: "xml",
success: parseXml
});
function parseXml(xml) {
var i = 0;
$(xml).find("category").each(function () {
idCategories[i] = $(this).attr('id');
// length increments at each iteration
alert("length=" + idCategories.length);
i = i + 1;
});
}
alert("length=" + idCategories.length); //returns 0
}

在函数 parseXml(xml) 中,数组长度很好地递增,但在此函数之外 length = 0!这样我就不能在另一个函数中使用数组 idCategories!

最佳答案

问题是 AJAX 调用是异步的。因此 parseXml 很可能(如果不是总是)在您的警报被调用后被调用。

为什么不呢:

function test() {
$.ajax({
type: "GET",
url: "http://my_site/api/categories?ws_key="
+ ws_key
+ "&PHP_AUTH_USER=" + PHP_AUTH_USER,
dataType: "xml",
success: parseXml
});
function parseXml(xml) {
var i = 0;
$(xml).find("category").each(function () {
idCategories[i] = $(this).attr('id');
// length increments at each iteration
alert("length=" + idCategories.length);
i = i + 1;
});
alert("length=" + idCategories.length); //returns 0
}
}

关于javascript - ajax 调用中使用的 javascript 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9758070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com