有没有办法在下面的代码中在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请求同步,但这通常不是您想要的,因为它倾向于锁定浏览器,直到收到响应为止。

07-28 10:13