javascript - ajax数据混乱
天蓬老师
天蓬老师 2017-04-11 12:03:11
[JavaScript讨论组]

我做了这么一个函数:

function ajax_get(url,fx){

    xhr=new XMLHttpRequest();
    xhr.open("GET",url,true);
    xhr.send();
    xhr.onreadystatechange=function(){
        if(xhr.readyState==4){
            if(xhr.status==200){
                fx(xhr.responseText);
            }else{
                alert("网络错误");
            }
        }
    }
}

现在,我调用它两次,两次的功能分别是获取粉丝数和获取发言记录

ajax_get("user.php?action=homepage&info=getfans&id={$_GET['id']}",function(x){document.getElementById("fans").innerHTML=x;});
ajax_get("user.php?action=homepage&info=getvotes&id={$_GET['id']}", function(y){ajax_load(y);});
function ajax_load(json)
{
    document.getElementById("net_info").innerHTML="";
    obj=eval("("+json+")");
    for(row in obj){
        document.getElementById("net_info").innerHTML+=("

"+obj[row].title+"

"); } }

第一次从服务器请求到的应该是6,第二次从服务器请求到的是一个JSON,实际运行下来,两次请求都请求到了正确的数据,并且第二次请求的数据总是按照我的设想正确的显示在网页上,但是第一次请求的数据每次加载网页都不会在网页上正确显示,有时什么也没有,有时显示的确是第二次请求的数据,这是为什么?
以下是完整的HTML

{tpl:nav.html}

  

{$userinfo['username']}

粉丝: 姓别:{$userinfo['gender']}

{$userinfo['msg']}

 

更多信息

{$userinfo['call']}的投票

{$userinfo['call']}的评论

正在加载……

{tpl:messagebox.html}

下两图是两次请求分别收到的数据:


下两图是实际运行结果:
有时无法获取粉丝数

有时粉丝数处显示的是第二次请求的JSON

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
PHP中文网

xhr 声明时加 var。

否则 xhr 成为了全局变量,第二次请求时会覆盖 xhr 变量,导致第一次 readystatechange 时访问的是第二次的 xhr

不要养成声明变量不加 var 的坏习惯

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

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