首页 新闻 会员 周边 捐助

js函数返回json数据格式问题

0
悬赏园豆:10 [已解决问题] 解决于 2016-09-12 18:21

我刚写了一个函数,用来获取http://www.tuling123.com(自动回答机器人)这个网站的数据,返回值是一个json数据格式,但是老是提示获取不到返回值里面的属性,我在函数里打印了一下,没有错误,就是没返回值。代码如下:

function getAjaxJson(Url){
        if (window.XMLHttpRequest) {
            var xhr=new XMLHttpRequest();
        }else{
            var xhr=new ActiveXObject('Microsoft.XMLHTTP');
        }
        var date=new Date().getTime();
        Url=Url+'&ILOVEYOU='+date;
        xhr.open('get',Url,true);
        xhr.send(null);
        xhr.onreadystatechange=function(){
            if (xhr.readyState==4) {
                if (xhr.status==200) {
                    var massage=JSON.parse(xhr.responseText);
                    return massage;
                }else{
                    alert('错误信息:'+xhr.status);
                    return false;
                }
            }
        }
    }
var Url='http://www.tuling123.com/openapi/api?key=fb6b7bcfbe52fccdb7f5d752a3088f75&info='+talk.value;
var msg=
getAjaxJson(Url);
alert(msg.text);//结果为null;??????

骑猪敲代码的主页 骑猪敲代码 | 初学一级 | 园豆:200
提问于:2016-09-12 17:46
< >
分享
最佳答案
0

我已经调出来了,这个获取服务器的函数为异步操作,不能直接返回值,需要再使用一个函数返回,具体代码为:

function getAjaxJson(Url,fn){
        if (window.XMLHttpRequest) {
            var xhr=new XMLHttpRequest();
        }else{
            var xhr=new ActiveXObject('Microsoft.XMLHTTP');
        }
        var date=new Date().getTime();
        Url=Url+'&ILOVEYOU='+date;
        xhr.open('get',Url,true);
        xhr.send(null);
        xhr.onreadystatechange=function(){
            if (xhr.readyState==4) {
                if (xhr.status==200) {
                    // var massage=JSON.parse(xhr.responseText);
                    fn(xhr.responseText);
                    // return massage;
                }else{
                    alert('错误信息:'+xhr.status);
                    return false;
                }
            }
        }
    }
var Url='http://www.tuling123.com/openapi/api?key=fb6b7bcfbe52fccdb7f5d752a3088f75&info='+talk.value;
                var msg=getAjaxJson(Url,function (str){
                    var massage=JSON.parse(str);//解析数据
                    console.log(massage.text);
                });

 

骑猪敲代码 | 初学一级 |园豆:200 | 2016-09-12 18:19
其他回答(2)
0

原生的Ajax。。。

收获园豆:5
顾晓北 | 园豆:10893 (专家六级) | 2016-09-12 17:54
0

是不是跨域受限了,用jsonp格式吧,然后现在很少看到有人用原生的ajax了。。。。

收获园豆:5
最爱晴天 | 园豆:187 (初学一级) | 2016-09-12 18:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册