Есть ли не-AJAX способ повторно опрашивать внешний файл JS? - PullRequest
0 голосов
/ 31 января 2011

будет очень признателен за любую помощь в этом вопросе JS.Экспериментировали в течение часа или около того и не сталкивались ни с чем, что могло бы помочь.

Текущая настройка

  • Веб-сайт 1: сайт с контентом.Этот сайт отображает различное содержимое в зависимости от того, вошел ли пользователь на сайт 2 или нет.Я использую тег script в голове с src, установленным для файла PHP, расположенного на веб-сайте 2.
  • Веб-сайт 2: сайт «управления пользователями».Это использует PHP для вывода в файл 'javascript', зарегистрирован ли пользователь (т.е. как js var).

В настоящее время эта настройка отлично работает для проверки того, вошел ли пользователь в систему веб-сайта 2, когда пользователь загружает страницу на веб-сайте 1.

Однако вместо однократной проверки я 'Я хочу, чтобы PHP-файл на веб-сайте 2 опрашивался каждые 2 секунды, чтобы узнать, не изменился ли статус входа.

Есть ли способ сделать это в vanilla javascript?(т.е. без ajax или jq - я пытаюсь сохранить всю систему маленькой и известной).

Если это уместно, друг предложил поместить случайно сгенерированную переменную в конец имени файла PHPпредотвратить кеширование.(Хотя он не знал, как это можно было бы повторно опрашивать!)

Ответы [ 2 ]

4 голосов
/ 31 января 2011

Полагаю, вы могли бы создать функцию интервала, изменяющую свойство src элемента script на вашей странице?

setInterval(
  function(){
    myscript.src = '/urltophp?'+someRandomKey;
  }, 2000);

Где someRandomKey предотвращает кэширование скрипта в браузере.Тег script может иметь id, поэтому его можно получить с помощью document.getElementById

. Для создания случайного ключа это может помочь:

function randomKey(iLen) {
  var sKey = ''
  , isKey = ''
  , i = 0
  , aRanges = ['48,9', '65,25', '97,25'];
  iLen = !iLen ? 4 : iLen;
  while (i < iLen) {
    var aRange = String(aRanges[Math.round(Math.random() * 2)]).split(',');
    isKey += String(aRanges[Math.round(Math.random() * 2)]) + ',';
    sKey += String.fromCharCode(Math.round(parseInt(aRange[0], 10) +
        (Math.random() * parseInt(aRange[1], 10))));
    i++;
  }
  return sKey;
}
0 голосов
/ 31 января 2011
setInterval(function(){


    $('#divtoloadcontentin').load('urlofscript' + '&nocache=' + Math.random()*Math.random());

}, 5000);

Единственная причина, по которой divloadcontentin состоит в том, что они могут быть загружены в функцию php date (), чтобы показать пользователям, насколько актуальна страница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...