Задать вопрос
AllDecay
@AllDecay
Вечно отдыхающий.

Моментальная подгрузка информации из json. Как реализовать?

Пишу сайт для студенческого радио своего университета и наткнулся на некоторое затруднение с реализацией вывода информации о текущем треке.
В icecast реализовал вывод информации маунта в json(выглядит это так):
{
"response":
      { 
      "name" : "Music",
      "listeners" : "12",
      "description" : "Description",
      "title" : "Soare - all i want",
      "genre" : "Ofther",
      "url" : "example.com"
}
}

Посредством json_decode в php вынимаю название трека:
$status = file_get_contents("http://example.com:8000/info.xsl");
$status = json_decode($status);
$track = $status->response;
	
if ($track->title != null)
{
	echo '<marquee behavior="scroll" scrollamount="3" direction="left">'.$track->title.'</marquee>';
	} else {
	echo 'Error:';
}

(Сделал сразу бегущей строкой для удобства)
И вот таким, возможно, что ужасным, кодом обновляю информацию на сайте и кидаю ее в div блок.
function show(url,block) 
	{
		$.ajax({ 
			url: url, 
			cache: false, 
			success: function(html){ 
				block.html(html); 
				} 
			}); 	
	}
			$(document).ready(function(){ 
			setInterval(function() { show('getTrack.php',$('#song-title')); } ,5000);
			});

Но из-за интервала в 5 секунд название трека подгружается не сразу и портит вид пустой строкой. Как можно реализовать моментальную подгрузку трек? (интервал в 1сек будет только напрасно сжигать трафик радиослушателей). Жду помощи)
  • Вопрос задан
  • 488 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Denormalization
@Denormalization
$(document).ready(function(){ 
      show('getTrack.php',$('#song-title'));
      setInterval(function() { show('getTrack.php',$('#song-title')); } ,5000);
});
Ответ написан
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Во-первых, почему бы сразу напрямую не забирать из icecast данные по ссылке example.com:8000/info.xsl?
Зачем лишнюю прокладку php делать.

Во-вторых, что мешает при загрузке страницы сразу вызвать функцию show(), помимо запуска интервала?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы