从我网站缓存中存储的字段中检索一些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>
如果我使用 cahe-tweets.php 中的网址替换上述代码中的网址,则效果非常好,推文显示在我网站的选框内。但如果按原样运行它,就不会出现任何问题。选框甚至没有显示为空。有谁知道为什么它不能与上面的网站网址一起使用?
答案 0 :(得分:0)
您可以尝试的一件事是将dataType标记为文本,然后执行data = JSON.parse(data);
并查看它是否有效。或者,如果使用json后缀而不是文本文件保存文件,它可能会起作用。