php - AJAX 变量作用域

标签 php javascript ajax

有没有办法在下面的代码中在 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/

相关文章:

PHP:生产服务器上的内存使用率非常高,而本地计算机上的内存使用率很低

php - 启用 PHP 扩展时出错

php - 更改 Javascript 变量而不刷新

javascript - 使用express.bodyParser()和passport.js

javascript - 使用 angularjs 解析 JSON

php - 通过Ajax获取音频文件

javascript - JQuery ajax中基本授权的使用

php - 对于中级 PHPer 来说有什么好的 PHP 代码示例吗?

javascript - 使用图片 URI 将照片上传到 Firebase 存储

javascript - 在 Datalist 问题中填充数据