我刚写了一个函数,用来获取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;??????
我已经调出来了,这个获取服务器的函数为异步操作,不能直接返回值,需要再使用一个函数返回,具体代码为:
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); });
原生的Ajax。。。
是不是跨域受限了,用jsonp格式吧,然后现在很少看到有人用原生的ajax了。。。。