2011-01-31 1 views
0

действительно оценил бы любую помощь с этим вопросом JS.
Проводили эксперимент в течение часа или около того и не наткнулись на все, что делает трюк.Есть ли способ не-аякс для многократного опроса внешнего файла js?


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

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


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

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

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

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

+0

Я бы назвал AJAX vanilla javascript - вам не нужно использовать сторонние библиотеки, чтобы использовать его (однако это помогает сгладить сложности кросс-браузера). Кроме того, у jQuery есть встроенные методы, помогающие предотвратить кеширование (я считаю, что он добавляет случайную цепочку для вас). Вы можете использовать фреймы или синхронные вызовы, но оба имеют проблемы. –

ответ

4

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

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

Для случайного ключа 'new Date(). GetTime()', вероятно, будет проще - 2-секундный интервал убедится, что он не столкнется;) –

+0

@Martin Jespersen: да, не думал об этом. Ну, это универсальный генератор случайных ключей бесплатно, тогда;) – KooiInc

0
setInterval(function(){ 


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

}, 5000); 

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

Смежные вопросы