#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.