Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как выести данные через JSON (https://javascript.ru/forum/dom-window/45199-kak-vyesti-dannye-cherez-json.html)

mrKot 18.02.2014 18:39

Как выести данные через JSON
 
Добрый день или вечер!

Как вывести данные через JSON вот с такого файла http://prisonvk.mikce.ru/mb.php?uid=1&format=json

Выводить надо именно

uid
damage
damage

Как его вывести на экран не так {"response":{"time":1392734316,"pr_version":1,"use r_uid":"1","data":{"uid":"123456789","damage":"0", "message":"тест","delete":"1392822353","visits ":"23","last":"1392719472"}}}

а нормально виде?

заранее спасибо)

danik.js 18.02.2014 18:56

var data = JSON.parse(response);
alert(data.response.data.uid);
alert(data.response.data.damage);

mrKot 18.02.2014 19:02

спасибо))) буду что-то мудрить может выйдет

mrKot 18.02.2014 19:04

Вот такое сделал не робит((

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

<script>
$.ajax(
{
url: 'mb.php?uid=1&format=json',
type: 'GET',

var data = JSON.parse(response);
alert(data.response.data.uid);
alert(data.response.data.damage);
}
}
)
</script>

danik.js 18.02.2014 19:49

Тянуть либу на 10000 строк ради одной функции - ну это маразм какой-то...
function getJSON(url, callback) {
    var request = new XMLHttpRequest();
    request.open('GET', url);
    request.onreadystatechange = function() {
        if (this.readyState != 4)
            return;
        var response = JSON.parse(this.responseText);
        callback(response);
    }
    request.send(null);
}

getJSON('mb.php?uid=1&format=json', function(response){
    alert(data.response.data.uid);
    alert(data.response.data.damage);
});

mrKot 18.02.2014 19:53

спасибо) ну что-то не работает(((


Uncaught ReferenceError: data is not defined tgh.php:16
(anonymous function) tgh.php:16
request.onreadystatechange

danik.js 18.02.2014 20:20

Цитата:

Сообщение от mrKot
спасибо) ну что-то не работает(((

Ну я вот опечатался. А ты походу совсем чайник в JS :)
Там должно быть response.response.data.uid

mrKot 18.02.2014 20:22

да, так и есть только начал изучать php немного знаю, оно не сложно а вот JS для меня сложное(((

mrKot 18.02.2014 20:24

спс работает щас напишу чтоб на монитор выводило)

mrKot 18.02.2014 20:28

а то воно выбивает окно типо потверждения)

danik.js 18.02.2014 20:49

Вобще, вместо GET лучше POST, а то в каких-то браузерах запрос может кэшироваться.
Или выставь запрет кэширования на сервере через заголовки. Даже не "или", а это прям обязательно нужно сделать, если твои данные не должны кэшироваться.

kostyanet 19.02.2014 16:13

В маразме на 1000 строк может быть предусмотрено обслуживание заголовков через status. Без этого не поймешь что пришло - ок или идитена. При условии, конечно, что скрипт выдает адекватные заголовки, а не умалчивает, на что сервер бодро рапортует: 200 ок, 200 ок, 200 ок.

kostyanet 19.02.2014 16:52

Кириллица в заголовках канает как и ожидалось по урлам.

php: header('HTTP/1.0 200 '.urlencode('Получено'));

js: console.log(decodeURI(link.statusText));

Результат:

GET http://тутсайт/ [HTTP/1.0 200 %D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%BE 15ms]

20:05:20.430 "Получено"

Интересно, а какова максимальная длина reason-phrase? Может и никакого джисона не надо - вали все в хедер и готово.

danik.js 19.02.2014 17:06

Цитата:

Сообщение от kostyanet
В маразме на 1000 строк может быть предусмотрено обслуживание заголовков через status

Это хорошо, когда скрипт хз с каким сервером работает и хз че может произойти. Но когда пишешь свой скрипт для работы на своем сервере - нахер эти заморочки? Ну status конечно лучше обрабатывать, ну на крайняк можно в Console/Network заглянуть. В конце концов жили же как-то до jQuery )))

mrKot 19.02.2014 17:25

тебе спасибо большое помог))) там у меня была тема огибка JS ошибку нашел просто забыл добавить свой домен в manifest.json и оно такое выдавало)

kostyanet 19.02.2014 17:38

Однако пишут что православно заголовок надо кодировать типа через такую фичу на php конкретно:

mb_encode_mimeheader()

Это я по интуиции из RFC 2047 уловил. Но если напрямую вывести через алерт, получается то, что получается:

=?UTF-8?B?0KLRgNC10LHRg9C10YLRgdGPINCw0LLRgtC+0YDQuNC30L DRhtC40Y8=?=

Кто сам отправлял имейлы с сервера - видел такую шнягу. В бнопне написано: Требуется авторизация. Кодировка UTF-8, Binary.

Ну вот, а перевести на русский обратно можно средствами ява-скрипт?

Через url-кодирование работает четко (кстати надо rawurlencode применять иначе пробелы+станут+плюсами), но RFC жжот!

mrKot 19.02.2014 17:47

Вот это я баран(((


Как тут вывести данные что-то я не пойму я уже понял как их получать)))

Ну не пойму как их вывести на экран

вот код

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$.getJSON('http://prisonvk.mikce.ru/prisonvk/stat.php?method=piar&uid=100&format=json&browser=c hrome&version=2011', function(response){
alert(response.response.data.uid);
alert(response.response.data.damage);

});

</script>

kostyanet 19.02.2014 18:26

В окно браузера? Там же есть какая-то разметка - туда. Или как там document.write(some);

kostyanet 19.02.2014 18:29

Типичнее некуда

Где-то на странице...

<span id="data_uid"></span>


в функции на событии ответа сервера

document.getElementById('data_uid').textContent = responce.response.data.uid

kostyanet 19.02.2014 18:31

По заголовкам оффтоп продолжу. Оказывается требуется аналог функции imap_utf8 которая делает Converts MIME-encoded text to UTF-8 ... are described in » RFC2047 and » RFC2044 respectively.

mrKot 19.02.2014 18:33

Я то в это уже разобрался))) а как установить в ссылку напимер

<a href="vk.com/id как вывести ИД сюда" target="_blank" style="color: #FF0000;">Тут я понял как делать)</a>

mrKot 19.02.2014 18:53

Всем кто помог большое спасибо все сделал))) Большое спасибо еще раз)

kostyanet 19.02.2014 18:59

в href добавить, натурально

a.href+=response.id;// или как там

сперва найти а как елемент, конечно.


Часовой пояс GMT +3, время: 01:36.