0

我正在使用以下代码在 Twitter 的 API 上进行搜索:

$.post('lib/themattharris-tmhOAuth-38bd48b/search.php',
       {q:'@something',
       pages:'1'}
)
.done(function(xhr) {
    try 
    {
        var tweets = $.parseJSON(xhr.responseText);
    }
    catch (e)
    {
        showError('Error : '+e.message);
        return;
    }
    if (tweets === null)
    {
        showError('Error : no tweets found');
        return;
    }

    $('#timeline').text(tweets.results[0].text);

})
.fail(function(xhr, textStatus, errorThrown) {
    showError('Error : ' + $.parseJSON(xhr.responseText).error);
})
.always(function() {
    $('#load').removeAttr('disabled');
});

但“推文”总是null。Mysearch.php进行搜索并简单地回显结果。我检查了jsonlint返回的 JSON ,没有发现错误。

有什么线索吗?

编辑这里是search.php

    require_once 'tmhOAuth.php';
    require_once 'tmhUtilities.php';
    require_once 'secrets.php';
    session_start();

    $tmhOAuth = new tmhOAuth(array(
      'consumer_key'    => $consumerKey,
      'consumer_secret' => $consumerSecret,
      'user_token'      => $_SESSION['access_token']['oauth_token'],
      'user_secret'     => $_SESSION['access_token']['oauth_token_secret']
    ));

    $p['q'] = $_POST['q'];
    $p['pages'] = 1;
    $p['include_entities'] = 'true';

    $pages = intval($p['pages']);
    $results = array();

    $code = $tmhOAuth->request(
      'GET',
      'http://search.twitter.com/search.json',
      $p,
      false
    );

    if ($code !== 200) {
        header("HTTP/1.1 500 Internal Server Error");
        echo $tmhOAuth->response['response'];
        return;
    }     
    else
    {
        echo $tmhOAuth->response['response'];
    }
4

2 回答 2

0

这工作^^;

.done(function(myJson) {
    try 
    {
        var tweets = $.parseJSON(myJson);
    }

我以为你应该使用.responseText

编辑:“成功回调函数传递返回的数据,这将是 XML 根元素、文本字符串、JavaScript 文件或 JSON 对象,具体取决于响应的 MIME 类型。

于 2012-11-08T11:25:56.230 回答
0

尝试改变 的范围tweets,即


...
var tweets;

try{...}
catch{...}

if (tweets === null)
{
    // does this work now?
}

etc.

于 2012-11-08T11:12:43.343 回答