javascript - 我向 Twitter API 发出了请求。如何获取从 PHP 脚本到 JavaScript 的 JSON 响应?

标签 javascript php json twitter

我正在执行一个 Twitter API 请求,该请求返回包含 #awkward 的所有推文的 JSON。这是服务器上的成功响应:http://babbage.cs.missouri.edu/~atgvyc/php/election_tweets/index.php

但我希望能够在 JavaScript 中使用该 JSON,并使用 for 循环对其进行解析,以提取某些信息(特别是地理标签和位置)。我以为我可以使用 AJAX 然后使用 JSON.parse 来完成此操作,但它并没有按照我想象的方式工作。

有什么建议吗?

这是我的 PHP 脚本:

<?php
require_once('TwitterAPIExchange.php');

$settings = array(
'oauth_access_token' => "XXX",
'oauth_access_token_secret' => "XXX",
'consumer_key' => "XXX",
'consumer_secret' => "XXX"
);

$url = 'https://api.twitter.com/1.1/search/tweets.json';
$getfield = '?q=#awkward&geocode=38.949926,-92.330037,35mi&result_type=recent';
$requestMethod = 'GET';

$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
         ->buildOauth($url, $requestMethod)
         ->performRequest();
?>  

这是我的 HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Sample elections tweets</title>

    <script>
    function loadXMLDoc()
    {
        var xmlhttp;

        if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
        }

        else
        {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {   
                var json = JSON.parse(xmlhttp.responseText);

                //here's where i'd like to put a for-loop
            }
        }

        xmlhttp.open("GET","index.php",true);
        xmlhttp.send(); 
    }
    </script>
</head>
<body>
    <h2>AJAX</h2>
    <button type="button" onclick="loadXMLDoc()">Request data</button>
<body>

最佳答案

好的,我想我知道你现在想做什么。实际上并没有像 php 那样的开箱即用的“foreach”,这就是为什么很多框架都实现自己的(jQuery 的 $.each()),或者制作原型(prototype)。但是,您也许可以通过以下操作完成您需要的操作。如果你愿意,你可以用alert()替换所有的console.log(),但是如果不在Chrome的开发工具中(大多数机器上按f12),它会变得很忙。另外,如果 Dale Musser 还在,请告诉他你好!米兹

function loadXMLDoc()
{
    var xmlhttp;

    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
    }

    else
    {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {   
            var json = JSON.parse(xmlhttp.responseText);

            //log entire json struct to developer console for easy viewing
            console.log(json);

            //you can reference individual pieces of json by doing something like
            //json.statuses or json.statuses[2]
            var statuses = json.statuses;

            for(var i=0;i<statuses.length;i++){
                var curStatus = statuses[i];

                //access bits directly
                var tweetAuthor = curStatus.user.name;
                var tweetTime = curStatus.created_at;

                //iterate hashtags
                var hashtags = curStatus.entities.hashtags;
                for(var k=0;k<hashtags.length;k++){
                        console.log("Hashtag: " + hashtags[k].text);
                }

                //iterate all elements of tweet
                for(var key in curStatus){

                    var attrName = key;
                    var attrValue = curStatus[key];

                    console.log("attribute name: " + attrName);
                    console.log("attribute key: " + attrValue);
                    if(attrName = "text") {
                        //Do something with tweet texts... like: 
                        //document.getElementById("statuses").appendChild(attrValue);
                    }
                }
            }

        }
    }

    xmlhttp.open("GET","index.php",true);
    xmlhttp.send(); 
}

关于javascript - 我向 Twitter API 发出了请求。如何获取从 PHP 脚本到 JavaScript 的 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22819220/

相关文章:

javascript - 如何从另一个选择中获取先前选择的值到当前选择 onclick?

php - 如何在 Mac OS ( OS X 10.10) 中将 php-cgi 作为插件安装?

java - 如何将 JSONObject 转换为包含 java.util.Set 字段的对象

JAVA - 解析巨大(超大)JSON 文件的最佳方法

javascript - 如何使用 JavaScript 枚举列表的 JSON 列表

javascript - 我想在同一张卡片中显示数据作为两列任何建议

javascript - 如何计算对象属性已更改的次数

javascript - 高度 100vh - JavaScript 中其他元素的高度

javascript - 绘制从原点到圆外半径的路径

php - 尝试创建新项目时出现 Symfony 错误 : Fatal error: Uncaught Symfony\Component\Dotenv\Exception\PathException: Unable to read . env