JSON解析器不起作用

时间:2010-07-19 11:30:12

标签: jquery json twitter

由于某种原因,我的json twitter解析器无法正常工作?

任何人都有任何想法?

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<script type="text/javascript">

    function outputHtmlToDiv(tweet,i){
      count = i + 1;
      $('#wrapper #sidebar .profile').html('<img src="'+tweet.profile_image_url+'" alt="Pretty Klicks" />');
    }
        $(document).ready(function(){

        var url = 'http://twitter.com/statuses/user_timeline/prettyklicks.json?count=1';

            $.getJSON(url,function(json){
                $.each(json.user,function(i,tweet){
                  outputHtmlToDiv(tweet,i);
                });
              });

        });


</script>

4 个答案:

答案 0 :(得分:2)

您有一些错误,主要是您需要在网址中&callback=?,如下所示:

 var url = 'http://twitter.com/statuses/user_timeline/prettyklicks.json?count=1&callback=?';

否则jQuery不知道发出JSONP请求(正常的XHR请求被阻止跨域,same-origin policy的补充)。你的get结构有点偏, base 对象是一个数组,整体看起来应该是这样的:

function outputHtmlToDiv(tweet, i) {
  count = i + 1;
  $('#wrapper #sidebar .profile').html('<img src="'+tweet.user.profile_image_url+'" alt="Pretty Klicks" />');
}
$(function(){
  var url = 'http://twitter.com/statuses/user_timeline/prettyklicks.json?count=1&callback=?';
  $.getJSON(url,function(json){
    $.each(json,function(i,tweet){
      outputHtmlToDiv(tweet,i);
    });
  });
});​

You can test it out here,因为上面对象中的json是一个推文数组,你需要直接遍历那个数组,json.user将是未定义的(数组没有属性然而,名为users),json[0].user就是你想要的。

答案 1 :(得分:1)

'+tweet.profile_image_url+'

之后缺少引用

试试这个:

$('#wrapper #sidebar .profile').html('<img src="'+tweet.profile_image_url+'" alt="Pretty Klicks" />');

答案 2 :(得分:0)

这是因为你在img / src之后有未公开的引用吗?而不是:

$('#wrapper #sidebar .profile').html('<img src="'+tweet.profile_image_url+' alt="Pretty Klicks" />');

尝试:

$('#wrapper #sidebar .profile').html('<img src="'+tweet.profile_image_url+'" alt="Pretty Klicks" />');

答案 3 :(得分:0)

您需要使用JSONP回调参数(请参阅the documentation)。使用jQuery,你可以使用?它会生成一个名字:

var url = 'http://twitter.com/statuses/user_timeline/prettyklicks.json?count=1&callback=?';