Парсер JSON не работает - PullRequest
0 голосов
/ 19 июля 2010

По какой причине мой парсер 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 ]

2 голосов
/ 19 июля 2010

У вас есть несколько ошибок, в основном вам нужно &callback=? в URL, например:

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

В противном случае jQuery не знает, чтобы сделать запрос JSONP (обычный запрос XHR блокируется перекрестно-домен, дополняет политику того же происхождения ).Кроме того, ваша структура 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);
    });
  });
});​

Вы можете проверить это здесь ,поскольку json в вышеприведенном объекте является массивом твитов, вам необходимо выполнить цикл по этому массиву напрямую, json.user будет неопределенным (Array не имеет свойства с именем users), однако, json[0].user - вот чтоты хочешь.

1 голос
/ 19 июля 2010

Отсутствует цитата после '+tweet.profile_image_url+'

Попробуйте это:

$('#wrapper #sidebar .profile').html('<img src="'+tweet.profile_image_url+'" alt="Pretty Klicks" />');
0 голосов
/ 19 июля 2010

Вам необходимо использовать параметр обратного вызова JSONP (см. документацию ). С jQuery вы можете просто использовать? и он сгенерирует имя:

var url = 'http://twitter.com/statuses/user_timeline/prettyklicks.json?count=1&callback=?';
0 голосов
/ 19 июля 2010

Это потому что у вас есть открытая цитата после img / src?

Intead of:

$('#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" />');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...