前端 - 请教一下在javascript中使用ajax遇到的问题
黄舟
黄舟 2017-04-11 12:25:14
[JavaScript讨论组]

先贴上代码

对不住各位,问题代码有点长
我先定义了一个ajax函数、一个值为10的全局变量temp、一个自定义函数getData。在传给ajax的回调函数中,我重新给temp变量赋值temp=5。
调用getData。
我的问题是
alert('接收到的数据:'+str):数据可以正常返回。
alert('回调函数内的temp:'+temp):这次temp的值是5,因为我重新赋值为5。
在ajax调用后,我第二次弹出temp的值,temp为10?请问这是为什么?谢谢!


baiduwiki.txt文件装的是一个数组,每个数组元素是json格式的数据:
[{'href':'http://www,baidu.com','img':'img/doom.jpg','word':'MF Doom','intro':'MF Doom.MF Doom.MF Doom.MF Doom.MF Doom.'},{'href':'http://www,baidu.com','img':'img/nas.jpg','word':'Nas','intro':'Nas.Nas.Nas.Nas.Nas.Nas.'}]

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHP中文网

很明显楼主还没有真正理解javascript异步回调函数的过程。

在执行getData函数的时候首先调用ajax函数ajax函数则给onreadystatechange事件注册(注意是注册,并没有执行)了一个方法,紧接着alert(temp)(此时temp还没被修改,还是10);
然后:ajax收到返回信息,触发onreadystatechange事件,执行之前注册的函数,才修改了temp的值,alert出修改后的temp

所以前一个alert(temp)弹出的是5,后一个alert(temp)弹出的是10。

怪我咯

ajax是异步的,不是写在后面就后执行。

给你的阮大的链接:Javascript异步编程的4种方法

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号