2014-02-06 4 views
1

아래 예를 통해 mysql 테이블로 div를 지속적으로 새로 고칩니다.새로 고침 div 내의 링크가 작동하지 않음

http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

나는하여 setInterval과의 setTimeout 사용하는 대신 사업부를 새로 아약스의 완전하고 제한 시간 매개 변수를 사용하고 있습니다.

내가 가지고있는 문제는 반환하는 데이터에 링크가 포함될 수 있고 클릭 할 때 작동하지 않는다는 것입니다. 문제는 div가 지속적으로 새로 고침되어 클릭이 무시된다는 것입니다. 상쾌한 div 안에 링크를 어떻게 허용합니까? 그것은 setinveral 및 settimeout와 함께 작동하지만 실시간 업데이트를 허용하기 위해 긴 폴링을 사용하려고합니다.

여기 내 코드입니다.

// get page url variables 
function getUrlVars() { 
    var vars = {}; 
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { 
     vars[key] = value; 
    }); 
    return vars; 
} 

// set var for parent id to scroll to 
var tid = getUrlVars()["tid"]; 
var pid = getUrlVars()["pid"]; 

(function poll(){ 

    // get latest page 
    $.ajax({ 
     url: "ajax.tickets_details.php?tid=" + tid, 
     type: 'GET', 
     cache: false, 
     success: function(html) { 

      // print results from get in div 
      $("#ticket_updates").html(html); 

     }, 
     complete: poll, 
     timeout: 30000 

    }); 

})(); 

고마워요!

+0

"문제는 반환하는 데이터에 링크가 포함될 수 있으며 이러한 링크는 클릭 할 때 작동하지 않습니다." 그들이 어떤 방식으로 * 작동하지 않는지 지정할 수 있습니까? 그들은 앵커 태그로 성공적으로 변형되어 클릭 할 수 있습니까? – Kippie

+0

링크로 포맷되어 있으며 클릭 할 수 있지만 href를 따르지는 않습니다. –

+0

링크가 반환 될 때 어떻게 보이나요? 스크립트를 디버그하고 반환 된 링크를 복사하여 여기에 게시 할 수 있습니까? – Avisari

답변

0

방금 ​​본 튜토리얼을 읽었으며 잘못된 정보를 기반으로합니다.

이 튜토리얼은 말한다 :

이 우리의 폴 기능이 모두 아약스 호출이 완료 될 때까지 다시 호출하고 (AT-이상) 서른 (30) 초 통과되지 의미합니다.

이것은 사실이 아닙니다. 요청이 < 30s 으로 돌아 오면 즉시 다시으로 발사하여 문제가 발생할 수 있습니다. 시간 초과의 실제 정의는 다음과 같습니다.

요청에 대한 시간 초과 (밀리 초)를 설정하십시오. 이것은 $ .ajaxSetup()으로 설정된 모든 글로벌 시간 초과를 무시합니다. 시간 제한 기간은 $ .ajax 호출이 끝날 때 으로 시작합니다. 다른 여러 요청이 에 있고 브라우저에 사용할 수있는 연결이없는 경우 보낼 수 있기 전에 시간 제한을 요청할 수 있습니다 ( ). 아래의 jQuery 1.4.x 및 에서 요청이 시간 초과되면 XMLHttpRequest 객체가 유효하지 않은 상태가됩니다. 모든 개체 멤버에 액세스하면 예외가 발생할 수 있습니다. Firefox 3.0 이상에서만 스크립트 및 JSONP 요청은 시간 제한에 의해 취소 될 수 없습니다. 스크립트는 시간 초과 기간 인 이후에 도착하더라도 실행됩니다.

그래서이 요청이 30 대 이상 걸리는 경우가 (이 계속되지만 자바 스크립트 처리기가 범위를 벗어나 이동합니다하지 호출 자체를) 대기 핸들러 을 취소 의미합니다.

이 결함을 강조 심지어 주석이 있습니다 : enter image description here

하나가 nonesense을 말하는 것으로 보인다 나는 새로운 튜토리얼을 찾을 것입니다. 이 기술은 "서버 푸시"를 전혀하지 않습니다. 웹 소켓 만 서버에서 푸시 할 수 있습니다. HTTP 1.1은 서버 푸시 메소드를 전혀 지원하지 않습니다.

+0

많은 감사를드립니다. 주어진 예제는 나를 위해 작동하지 않지만 setTimout (function, 30000)을 함수의 맨 아래에 추가했습니다. –