2012-07-18 101 views
0

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

$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上面的代码的URL从cahe-tweets.php它完美的作品和鸣叫显示在我的网站上的选取框内。但如果我按原样运行它,则不会显示任何内容。选框甚至不显示为空。有谁知道为什么它不符合上述网站的网址?

+1

您的网址存在错误,但我不确定这是否是您的问题,但它应该是http不是htp – qw3n 2012-07-18 19:21:18

+0

感谢您指出,但这不是问题,只是一个错字! – 2012-07-18 19:50:38

+0

你有什么Javascript错误吗? – Kishore 2012-07-18 19:59:13

回答

0

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

+0

这给XMLHttpRequest无法加载http://sotontab.co.uk/wp-content/cache/twitter-josn.txt原产地不允许通过Access-Control-Allow-Origin和JSON.parse输入的意外结束 – 2012-07-18 20:07:54

+0

你的网站的基本网址是什么? – Kishore 2012-07-18 20:10:23

+0

http://sotontab.co.uk但它的代码目前正在运行在http://test.sotontab.co.uk – 2012-07-18 20:15:28