10 分ごとに応答をキャッシュする単純な PHP Twitter 要求を作成しました。要求コードは次のようになります。
$twitter_result = false;
if (file_exists( 'twitter.json' )) {
$data = json_decode( file_get_contents( 'twitter.json' ));
if ($data->timestamp > (time() - 10 * 60) ) {
$twitter_result = $data->twitter_result;
}
}
if (!$twitter_result) {
$twitter_result = file_get_contents('http://api.twitter.com/1/statuses/user_timeline.json?q=@SolidCAMUK&rpp=1&screen_name=SolidCAMUK&count=1');
$data = array ('twitter_result' => $twitter_result, 'timestamp' => time());
if(file_put_contents( 'twitter.json', json_encode($data) )) {
//echo 'success';
} else {
//echo 'error';
}
}
$file = file_get_contents('twitter.json');
header("content-type:application/json");
if($_GET['callback']) {
echo $_GET['callback'] . '(' . $file . ')';
} else {
echo $file;
}
exit;
このページに対して返される JSONP の例は、次のようになります: http://dev.driz.co.uk/phptwitter/?callback=Test
そして、ここのテストシナリオでこの JSONP を使用しようとしています: http://dev.driz.co.uk/phptwitter/test.php
ただし、データが正しく表示されません。応答を console.log すると、実際のオブジェクトではなく文字列として動作しているように見えるため、JSON が正しくフォーマットされていないと推測しています...誰か問題を見ることができますか?