0

我在从存储在我网站缓存中的字段中检索一些 JSON 数据时遇到了一些麻烦。我正在编写的脚本从 twitter 列表中获取最新的推文,将它接收到的 JSON 数据存储在网站缓存中的 .txt 文件中。然后将其读取并转换为显示推文的字符串,或者至少应该如此。当我不缓存推文并直接访问它们时,它就可以工作,但是一旦我尝试缓存推文然后从缓存中访问它们,我就会碰壁。cache-tweets.php文件在服务器上作为 cron 作业运行,并且工作正常,它创建了一个包含 JSON 数据的文本文件,没有问题。cache-tweets.php的代码如下。

$cache = dirname(__FILE__) . '/cache/twitter-json.txt';  

$data = file_get_contents('https://api.twitter.com/1/lists/statuses.json?slug=tab&owner_screen_name=swoophoop&per_page=15&page=1&include_entities=true');   

$cachefile = fopen($cache, 'wb');  
fwrite($cachefile,utf8_encode($data));  
fclose($cachefile);

然后,此代码应使用它:

<script type ="text/javascript"> 
$(document).ready(function(){
$.ajax({
    dataType: 'json',
    url: 'http://sotontab.co.uk/wp-content/cache/twitter-json.txt',
    success: function (data) {
        var strTweet = '';

        $.each(data, function(index, tweet){                
            var user_link = '\x3Ca href="http://twitter.com/' + tweet.user.screen_name + '">' + '\x3Cb>' + tweet.user.name + '\x3C/b>\x3C/a>';
            strTweet=strTweet + user_link + ' : &nbsp' + tweet.text.linkify() + '&nbsp' + '\x3Cdiv class="time">' + relative_time(tweet.created_at) + '\x3C/div>&nbsp&nbsp&nbsp';
        });
        tweetMarquee = new Marquee($('div#marquee'),strTweet,$('div#marquee').width);
    }
});
});      


</script>

如果我将上面代码中的 url 替换为cahe-tweets.php中的 url,它会完美运行,并且推文会显示在我网站的选框内。但是如果我按原样运行它,什么都不会出现。选框甚至不会显示为空。有谁知道为什么它不适用于上述网站网址?

4

1 回答 1

0

您可以尝试的一件事是将 dataType 标记为文本,然后执行data = JSON.parse(data);并查看它是否有效。或者,如果您使用 json 后缀而不是文本文件保存文件,它可能会起作用。

于 2012-07-18T20:03:52.843 回答