Javascript 如何访问onreadystatechange外部的阵列(范围问题)
我有一个函数ajaxCall(),它调用内部带有数组的json文档。 我从xmlhttp.responseText返回的数据存储在数组arrayImages中。我需要在函数ajaxCall()之外访问数组arrayImages,因为我需要该数组的长度arrayImages.lengthJavascript 如何访问onreadystatechange外部的阵列(范围问题),javascript,arrays,ajax,scope,xmlhttprequest,Javascript,Arrays,Ajax,Scope,Xmlhttprequest,我有一个函数ajaxCall(),它调用内部带有数组的json文档。 我从xmlhttp.responseText返回的数据存储在数组arrayImages中。我需要在函数ajaxCall()之外访问数组arrayImages,因为我需要该数组的长度arrayImages.length function ajaxCall(){ xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState==4 &&
function ajaxCall(){
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
arrayImages = JSON.parse(xmlhttp.responseText);
output(arrayImages);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
我需要这样的功能
var arrayLength = arrayImages.length;
由于
onreadystatechange
是一个异步函数,因此无法确定何时返回数组。因此,处理它的唯一方法是在数组完成时使用回调函数输出数组的长度。
像这样:
function ajaxCall(){
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
arrayImages = JSON.parse(xmlhttp.responseText);
output(arrayImages);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function output(array)
{
//your other stuff here
var arrayLength = array.length;
}
这不是范围问题,而是时间问题。XHR是异步的,只有在HTTP请求进行时才会调用状态更改回调。