jQuery json.text?

#jquery #json #twitter

#jquery #json #Twitter

Вопрос:

Я пытаюсь создать страницу подключения, на которой вы можете просматривать все для twitter, facebook, youtube, … Я использую функцию getJSON в jquery для получения данных из twitterApi: http://api.twitter.com/1/users/show.json?screen_name=Some_username. Проблема, с которой я сталкиваюсь, заключается в том, что я могу получить все данные в возвращаемом файле json, за исключением текстовой строки, которая содержит последнее сообщение. Когда я пытаюсь получить json.text, он возвращает undefined, что неверно, потому что раньше я просматривал возвращенный json прямо через свой браузер. Я думаю, что функция jQuery.text() по умолчанию возится с этим, но у меня нет никаких доказательств. Если это так, кто-нибудь знает обходной путь?

Код (twitter.php это просто php-файл, который копирует данные с сайта Twitter, чтобы избежать проблем с междоменными сценариями):

 function setUser() {
    $('#intro').fadeOut();
    $('body').css('background-color', "#"   bg);
    $('body').css('background-image', 'url('   bgImg   ')');
    $('body').css('background-repeat', 'repeat');
    $('.imgwrap').html('<img class="profimg" src="'   ppic   '"/>');
    $('.username').text(username);
}

var bg = "white";
var ppic = "http://test.campatet.com/identicon/ident.php?size=48";
var bgImg = "none";
var username = "undefined";
$(function () {
    $('#submitid').click(function () {
        $('#login, #submitid, #introwrapper label').hide();
        $('#spinner').spin();
        $('#intro').css("width", "99%").width("100%");
        $.getJSON('twitter.php?f=showamp;p="1/users/"amp;q="screen_name='   $('#login').val()   '"', function (json) {
            bg = json.profile_background_color;
            alert(json.text);

            if (json.profile_image_url) {
                ppic = json.profile_image_url;
            }
            if (json.profile_background_image_url) {
                bgImg = json.profile_background_image_url;
            }

            if (json.error) {
                username = json.error;
                $('#introwrapper').html('Error: '   username   '. <a href="javascript:location.reload(true);" style="color:white;">Refresh Page</a>');
            } else {
                username = json.name;
                setUser();
            }
        });
    });
});
  

Комментарии:

1. Я взял на себя смелость сделать отступ в вашем коде, используя jsbeautifier.org . Однако, пожалуйста, убедитесь, что при написании кода вы, возможно, сделали отступ. Это облегчает чтение для всех (включая вас!).

2. Погуглил и нашел пример, надеюсь, это поможет: jsfiddle.net/elijahmanor/Nstnx/22

Ответ №1:

После проверки строки JSON ответа я пришел к выводу, что вы должны использовать json.status.text вместо json.text .

Смотрите ниже для структуры JSON ответа:

 {
    "default_profile_image": true,
    ...
    "profile_image_url_https": "https://si0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png",
    "status": {
        ...
        "text": "woah i forgot i made a twitter account... i promised myself i'd never do this.. oh well i give in haha."
    },
    ...
}
  

Скрипка: http://jsfiddle.net/jmwy4 /
Также можно использовать http://jsbeautifier.org / для отступа ответа JSON, чтобы получить четкое представление о возвращенном объекте / ответе JSON.