2011-01-31 6 views
0

정말이 JS 질문에 대한 도움을 주시면 감사하겠습니다.
지금 1 시간 정도 실험을 해본 결과 트릭을하는 모든 것에 부딪치지 않았습니다.외부 js 파일을 반복적으로 폴링하는 아약스가 아닌 방법이 있습니까?


현재 설정

  • 웹 사이트 1 : '내용'사이트. 이 사이트는 사용자가 웹 사이트 2에 로그인했는지 여부에 따라 다른 콘텐츠를 표시합니다. 머리 부분에 스크립트 태그를 사용하여 웹 사이트 2에있는 PHP 파일을 src로 설정했습니다.
  • 웹 사이트 2 : '사용자 관리'사이트. 이것은 사용자가 로그인했는지 (즉, js var로) PHP를 사용하여 'javascript'파일로 출력합니다.


는 현재이 설정은 사용자가 웹 사이트에이 시스템을 기록 여부를 확인하기 위해 잘 작동 할 때 웹 사이트 1.

그러나의 사용자 로드 페이지, 오히려 일회성 검사보다 웹 사이트 2의 PHP 파일을 2 초마다 폴링하여 로그인 상태가 변경되었는지 확인하고 싶습니다.

바닐라 자바 ​​스크립트에서이를 수행 할 수있는 방법이 있습니까? (즉, 아약스 또는 jq없이 - 전체 시스템을 작게 유지하려고합니다.)

친구와 관련하여 캐싱을 방지하기 위해 임의로 생성 된 변수를 PHP 파일 이름의 끝에 두는 것이 좋습니다. (그는 반복적으로 폴링 할 수있는 방법을 몰랐습니다!)

+0

AJAX vanilla javascript를 고려해 볼 수 있습니다. 제 3 자 라이브러리를 사용하지 않아도됩니다 (단, 크로스 브라우저 인터페이스를 철저히 지원할 수 있습니다). 또한 jQuery에는 캐싱을 방지하는 기본 제공 메소드가 있습니다 (나는 당신이 임의의 쿼리를 추가한다고 생각합니다). 프레임 또는 동기식 호출을 사용할 수 있지만 둘 다 실패 할 수 있습니다. –

답변

4

페이지의 스크립트 요소의 src 속성을 변경하는 간격 함수를 만들 수 있다고 생각합니까? someRandomKey 스크립트를 방지

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

는 브라우저에 캐시된다. 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() 함수는 사용자에게 페이지의 최신 정보를 보여줍니다.

관련 문제