0

I have created a simple PHP Twitter request that caches the response every 10 minutes. The request code looks like:

$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;

And an example of the returned JSONP for this page looks like: http://dev.driz.co.uk/phptwitter/?callback=Test

And then I'm trying to use this JSONP in my test scenario here: http://dev.driz.co.uk/phptwitter/test.php

However the data isn't being displayed properly. I'm guessing that the JSON isn't formatted correctly, as when I console.log the response, it seems to be acting as a string rather than an actual object... Can anyone see any issues?

1 Answer 1

1

There is nothing wrong with the returned JSON format. It is valid and you can check it here.

You are doing console.log(response.twitter_result); and that's why you see plain text. If you do console.log(response); you will see the actual returned object.

The response.twitter_result is an object also but you have to parse it first like this

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
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.