2012-07-18 105 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