有没有办法在下面的代码中在 downloadURL() 之外输出所需的 mlength?怎么办?
var markers=new Array();
var mlength=0;
downloadUrl("phpsqlajax_genxml.php", function(data) {
var xml = data.responseXML;
markers = xml.documentElement.getElementsByTagName("marker");
mlength = markers.length;
alert(mlength); //output is not 0 (ex. 3)
});
alert(mlength); //outputs 0
最佳答案
这是因为根据定义,AJAX 是异步的。到执行 alert
时,AJAX 调用尚未返回。您需要将所有使用 mlength
的代码移动到成功回调中。
另一种选择是使 AJAX 请求同步,但这通常不是您想要的,因为它往往会锁定浏览器,直到收到响应。
关于php - AJAX 变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442726/