Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Какая ошибка вывода в Json? (https://javascript.ru/forum/misc/72931-kakaya-oshibka-vyvoda-v-json.html)

spinastr 07.03.2018 14:11

Какая ошибка вывода в Json?
 
Вывожу данные статистики:

PHP

<?PHP
$i = parse_ini_string(file_get_contents('http://counter.yadro.ru/values?site=devaka.ru'));
file_put_contents('st.json',json_encode($i));
?>


JSON

{"LI_site":"devaka.ru","LI_month_hit":"109891","LI_month_vis":"49790","LI_week_hit":"26620","LI_week_vis":"14228","LI_day_hit":"5207","LI_day_vis":"3393","LI_today_hit":"335","LI_today_vis":"232","LI_online_hit":"11","LI_online_vis":"6"}



HTML

<div class="lives"></div>

<script>
$.getJSON(".s08.test-hf.su/st.json", function(data) {
 $('.lives').html(LI_site);
});
</script>




Подскажите что тут неверно? Почему не работает?

laimas 07.03.2018 14:27

Цитата:

Сообщение от spinastr
Почему не работает?

Потому, что нет такого на клиенте, есть data.LI_site.

file_put_contents('st.json',json_encode($i)); - это зачем?

$.getJSON должен обращаться к файлу сценария, который делает запрос к другому домену и сразу возвращает нужное:

<?
if($f = file_get_contents('http://counter.yadro.ru/values?site=devaka.ru')) {
    exit(json_encode(parse_ini_string($f)));
} else exit(json_encode(['error'=>'Text error.']));

spinastr 07.03.2018 14:32

laimas,

На самом сайте у меня нету PHP и нужно через json выводить со стороннего хостинга.
Добавил ваш код в php? а дальше что делать я в js и php не особо разбираюсь. Подскажите пожалуйста?

laimas 07.03.2018 14:33

Ничего не делать, изменить url запроса в $.getJSON.

spinastr 07.03.2018 14:38

laimas,

Подскажите как игде изменить в js или php

я написал так и неработает

<div class="lives"></div>
 
<script>
$.getJSON("http://h116641.s08.test-hf.su/st.php", function(data) {
$('.lives').html(data.LI_site);
});
</script>

laimas 07.03.2018 14:41

Если http://h116641.s08.test-hf.su/st.php, это файл выполняющий указанный код, то все должно работать. Ошибки могут быть только на клиенте.

PS. Конечно, если это запрашивает также домен h116641.s08.test-hf.su. В противном случае нужно разрешение, перечитывайте тему о курсах валют, так об этом говорилось - о заголовках, которые должен отдавать домен h116641.s08.test-hf.su.

spinastr 07.03.2018 14:42

laimas,
У меня сайт на юкоз там нету php, как можно перевести php в json и оттуда через js вывести данные в div?

laimas 07.03.2018 14:45

Читайте постскриптум выше.

spinastr 07.03.2018 14:47

laimas,

В этом домене на эти файлы ещё не ставил ограничения как с курсом

Я всю ночь читал и уже забыл, подскажите? Как вывести?

Почему я делал через json?
Цитата:

Сообщение от laimas
file_put_contents('st.json',json_encode($i)); - это зачем?

Вы так сказали?

Про заголовки, есть такой фаил


index.php


<?php
header('Access-Control-Allow-Origin: Мой сайт');
header('Vary: Origin');
header('Access-Control-Allow-Methods: GET');
header('Content-type: application/json; charset=utf-8');
exit(file_get_contents('current/current.json'));
?>

laimas 07.03.2018 15:08

Если домен h116641.s08.test-hf.su отдает и курсы валют и прочую информацию, то разрешение для домена ее запрашивающую нужно поместить в файл .htaccess, который размещен в корне документов на домене h116641.s08.test-hf.su. Эти строки нужно поместить в этот файл:

Header add Access-Control-Allow-Origin "домен вашего сайта"
Header add Vary "Origin"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "GET, POST"

Из index.php нужно удалить передачу этих заголовков, то есть в нем должно быть:

<?php
header('Content-type: application/json; charset=utf-8');
exit(file_get_contents('current/current.json'));
?>


Передавать заголовок header('Content-type: application/json; charset=utf-8'); должен и файл отдающий другую информацию в формате JSON.


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