2013-04-12 2 views
0

Я создал простой запрос PHP Twitter, который кэширует ответ каждые 10 минут. Код запроса выглядит следующим образом:PHP Twitter Запрос с JSONP

$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/[email protected]&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

Однако данные не отображаются должным образом. Я предполагаю, что JSON не отформатирован правильно, так как когда я console.log ответ, он работает как строка, а не фактический объект ... Может ли кто-нибудь увидеть какие-либо проблемы?

ответ

1

Нет ничего плохого в возвращенном формате JSON. Он действителен, и вы можете проверить его here.

Вы делаете console.log(response.twitter_result);, и именно поэтому вы видите простой текст. Если вы делаете console.log(response);, вы увидите фактический возвращенный объект.

response.twitter_result является объектом также, но вы должны разобрать его первый как этот

success: function(response){ 
       var twitter_result = $.parseJSON(response.twitter_result); 

       console.log(twitter_result[0].text); 
       //and here you can apply your parseTwitterText() function as you wish 
} 
+0

Спасибо приятелю. Это исправило это. – Cameron

Смежные вопросы