Javascript 在AJAX中使用JSON格式的TwitterRESTAPI

Javascript 在AJAX中使用JSON格式的TwitterRESTAPI,javascript,Javascript,我试图在TwitterRESTAPI(JSON格式)上实现AJAX。我做了下面的事情,但是什么也没发生 没有从服务器(Twitter)获得任何响应。我错过什么了吗 function getRecentTweet(){ twitterUsername = document.getElementById("twitterUsername").value; if(window.XMLHttpRequest){ xhr = new XMLHtt

我试图在TwitterRESTAPI(JSON格式)上实现AJAX。我做了下面的事情,但是什么也没发生

没有从服务器(Twitter)获得任何响应。我错过什么了吗

function getRecentTweet(){

        twitterUsername = document.getElementById("twitterUsername").value;

        if(window.XMLHttpRequest){
            xhr = new XMLHttpRequest();
        }
        else{
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xhr.open("GET", "http://api.twitter.com/1/statuses/user_timeline/" + twitterUsername + ".json", true);
        xhr.send(null);

        xhr.onreadystatechange = function(){
            if (xhr.readyState == 4) {
                if(xhr.status == 200) {
                    var jsonObj = eval(responseJSON);
                    document.getElementById("twitterStream").innerHTML = jsonObj[0].text;
                }
            }
        } 
    }

谢谢

是的,不允许跨域AJAX调用。您需要使用JSONP

向Twitter的API发出请求并附加
回调
参数。以下是一个示例url:

然后,来自Twitter的响应将包含可执行的JavaScript代码,其中函数名被指定为回调参数。因此,Twitter的反应如下:

myFunction(<JSON here>);
然后在页面上定义一个全局函数
myFunction
,每当Twitter返回响应时,该函数总是被调用。这也可以预定义或动态生成

<script>
function myFunction(data) {
    console.log(data);
}
</script>

函数myFunction(数据){
控制台日志(数据);
}

是的,不允许跨域AJAX调用。您需要使用JSONP

向Twitter的API发出请求并附加
回调
参数。以下是一个示例url:

然后,来自Twitter的响应将包含可执行的JavaScript代码,其中函数名被指定为回调参数。因此,Twitter的反应如下:

myFunction(<JSON here>);
然后在页面上定义一个全局函数
myFunction
,每当Twitter返回响应时,该函数总是被调用。这也可以预定义或动态生成

<script>
function myFunction(data) {
    console.log(data);
}
</script>

函数myFunction(数据){
控制台日志(数据);
}

您可能还希望避免使用
eval
,并使用
JSON.parse()
方法

如果需要,可以获取响应,将其保存到本地json文件服务器端,然后使用AJAX从那里访问它


因此,您可以调用服务器端脚本并避免使用JSONP,它是由JavaScript代码执行的。Twitter似乎足够安全,但在LinkedIn、Yahoo、安全漏洞之后,你永远不会知道

您可能还希望避免使用
eval
并使用
JSON.parse()
方法

如果需要,可以获取响应,将其保存到本地json文件服务器端,然后使用AJAX从那里访问它


因此,您可以调用服务器端脚本并避免使用JSONP,它是由JavaScript代码执行的。Twitter似乎足够安全,但在LinkedIn、Yahoo、安全漏洞之后,你永远不会知道

感谢Anurag的详细回答@希比塞罗-不客气。您可能还想看看现有的库,如jQuery、MooTools等等。。。已经解决了这个问题。或者,如果您想坚持使用纯Javascript,那么他们现有的解决方案可以帮助您更快地编写自己的脚本。感谢Anurag提供详细的答案@希比塞罗-不客气。您可能还想看看现有的库,如jQuery、MooTools等等。。。已经解决了这个问题。或者,如果您想坚持使用纯Javascript,那么他们现有的解决方案可以帮助您更快地编写自己的脚本。