先贴上代码
对不住各位,问题代码有点长
我先定义了一个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.'}]
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
很明显楼主还没有真正理解javascript异步回调函数的过程。
在执行
getData函数的时候首先调用ajax函数,ajax函数则给onreadystatechange事件注册(注意是注册,并没有执行)了一个方法,紧接着alert(temp)(此时temp还没被修改,还是10);然后:ajax收到返回信息,触发onreadystatechange事件,执行之前注册的函数,才修改了temp的值,alert出修改后的
temp所以前一个
alert(temp)弹出的是5,后一个alert(temp)弹出的是10。ajax是异步的,不是写在后面就后执行。
给你的阮大的链接:Javascript异步编程的4种方法