我在从存储在我网站缓存中的字段中检索一些 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 + ' :  ' + tweet.text.linkify() + ' ' + '\x3Cdiv class="time">' + relative_time(tweet.created_at) + '\x3C/div>   ';
});
tweetMarquee = new Marquee($('div#marquee'),strTweet,$('div#marquee').width);
}
});
});
</script>
如果我将上面代码中的 url 替换为cahe-tweets.php中的 url,它会完美运行,并且推文会显示在我网站的选框内。但是如果我按原样运行它,什么都不会出现。选框甚至不会显示为空。有谁知道为什么它不适用于上述网站网址?