解决来自Twitter api的jsonP请求的轻微问题

时间:2012-10-17 14:18:19

标签: jquery twitter jsonp

我在从Twitter api解析jsonP请求时遇到问题。

我的代码如下:

var processRequest = function(data){

        console.log(data); //outputs what I believe to be correct 
        var result = $.parseJSON(data);
        var text = '';
        console.log("1");//outputs
        $.each(result, function(){
            console.log("2");// doesn't output
            text = this['created_at'];
        });
        console.log(text);//doesn't output
}

$(document).ready(function () {


var url = "https://api.twitter.com/1/statuses/user_timeline.json?include_entities=0&include_rts=0&screen_name=DockersHamptons&count=1&callback=processRequest";

$.ajax({
    type: "GET",
    url:url,
    dataType: 'jsonp',
    data: {},
    success: function (data){
        if(typeof(data.error) != 'undefined') {
            if(data.error != ''){
                //Shouldn't hit here
            }                   
        } else {
            //Shouldn't hit here.   
        }
    }
});

});

我在firebug控制台中遇到的错误是: TypeError:a为null

但它说错误位于第2行的“jquery-1.7.1.min.js”文件中。

我也试过在jsfiddle中玩这个,这个设置没有写任何内容到<span></span>

http://jsfiddle.net/kdP8b/1/

但是这个设置确实如此:

http://jsfiddle.net/3tHXN/2/

这是否意味着twitter api中存在导致其以无效的json格式出现的内容?

编辑: 我仍然遇到同样的问题,但我想补充它以防它可能有所帮助。

Jquery是通过$ .parseJSON()命中行来定义的,因为我尝试在该行之前和之后添加jquery代码。所以问题肯定在于twitter的api返回的内容。但我发现很难相信他们给了我无效的json格式化数据。那么在使用$ .parseJSON()之前我必须对结果做些什么?

1 个答案:

答案 0 :(得分:0)

我在其他网站上找到了解决方案。我的问题是twitter api已经返回一个格式良好的json字符串。所以我只需要删除使用$ .parseJSON()。

var processRequest = function(data){
var text = '';
$.each(data, function(){
    text = this['text'];
});
$("#twitter_update_list").html("<li>"+text+"</li>");
}