请教 JS 访问函数内的全局变量

testname 2017-10-27 02:46:50
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function Ajax (){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
Json = xmlhttp.responseText;
}
}
xmlhttp.open("GET","select.php",true);
xmlhttp.send();

alert(Json); // 此处怎么才能访问到 函数内的全局变量 Json
...全文
664 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
同步,send后直接用,或者居于回调 xmlhttp.open("GET","select.php",false); xmlhttp.send(); alert(xmlhttp.responseText)
    function SendAjax(callback) {
        var xmlhttp;
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function Ajax() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                callback(xmlhttp.responseText)
            }
        }
        xmlhttp.open("GET", "select.php", true);
        xmlhttp.send();
    }

    SendAjax(function (d) {
        alert(d)
    })


Web开发学习资料推荐
javascript解码读取二维码信息
javascript客户端图片预览
天际的海浪 2017-10-27
  • 打赏
  • 举报
回复
简单的方法是改用同步模式 xmlhttp.open("GET","select.php",false); 但同步模式会让浏览器线程被锁死。 不想线程被锁死,就只有用异步。 如果用异步,在ajax请求加载数据的这行代码的后面不要写任何需要用到加载的数据的代码。因为这些代码执行时数据肯定还没有加载的。 所有需要用到加载的数据的代码都必须放在数据加载完成的回调函数中才能正解获取数据。 异步执行简单的说就是会先执行ajax方法下面的代码,然后过一段时间再执行ajax的回调函数。 这类似于 setTimeout()定时器

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧