2013-04-10 6 views
5

webapp에서 데이터 표를 사용하고 있습니다. 문제는 사용자가 항상 데이터베이스에서 현재 데이터를 가져 오기 위해 페이지를 새로 고쳐야한다는 것입니다. 자동으로 수행 할 수있는 방법이 있습니까? 여러 개의 응용 프로그램이 동일한 테이블에 쓰고 웹 응용 프로그램을 모니터링하기위한 용도로만 사용되기 때문에 사용자가 현재 데이터를 가져 오기 위해 페이지를 새로 고쳐야하는 경우 그 목적을 능가합니다.데이터베이스, 웹 소켓 또는 긴 폴링 구현에서 레코드가 변경 될 때 데이터 테이블을 지속적으로 업데이트하는 방법

$('.{{datatable['class']}}').dataTable({ 
       "sDom": 'T<"clear">lfrtip', 
       "oTableTools": { 
        "sSwfPath": "includes/swf/copy_csv_xls_pdf.swf",     
        "aButtons": [ 
         { 
          "sExtends":"copy", 
          "mColumns":[{{datatable['flds']}}] 
         }, 
         { 
          "sExtends":"csv", 
          "mColumns":[{{datatable['flds']}}] 
         }, 

         { 
          "sExtends":"xls", 
          "mColumns":[{{datatable['flds']}}] 
         },       
         { 
          "sExtends": "pdf", 
          "mColumns":[{{datatable['flds']}}], 
          "sPdfOrientation": "landscape", 
          "sPdfMessage": "{{datatable['title']}}" 
         } 
        ] 
        },   
       "bProcessing": true, 
       "bServerSide": true, 
       "sAjaxSource": "{{datatable['source']}}", 
       "aoColumns": [   
         {% for column in 0..datatable['columns']-2 %} 
         null, 
         {% endfor %} 
         null 
       ] 

     }); 

목록이 될 수있는 방법 자체 때마다 아무것도 (UPDATE/INSERT가/삭제) 데이터 소스에 일을 업데이트가 : 여기 내 초기화 코드인가? 대니는 제안 은 내가

var int=self.setInterval(function(){oTable.fnDraw();},1000); 

그러나 문제 목록이 재미 상태가 항상 있다는 것입니다, 당신은 루프에서 발생 아약스 요청을 할 수 enter image description here

답변

2

위해, 첨부 이미지 참조 루프를 구현 페이지가 마지막으로 아무것도 수신 한 이후에 새로운 데이터가 있는지 확인하는 인터벌 타이머에 의해. 레코드 수나 최종 업데이트/추가/삭제의 datetime을 보유한 전용 레코드를 결정할 때 사용할 수있는 것이 무엇인지 파악해야하며 datetime이 더 새로운 경우 마지막으로 데이터를 다시 가져온 경우 등을 다시 업데이트해야합니다. 이 페이지에서 자바 스크립트 var의 마지막 데이터 업데이트 날짜 시간을 기록/업데이트하여 이후의 모든 검사에 사용할 수 있습니다.

+0

이 루프의 예를 들어 주시겠습니까? 두 번째 나는 대부분의 변경 사항이 업데이트이고 업데이트로 인해 레코드 수가 변경되지 않기 때문에 레코드 수를 사용할 수 없습니다. – indago

+0

@indago 마지막으로 삽입/업데이트/삭제가 검사로 사용되었을 때 저장하기 위해 새로운 테이블이나 파일을 만들 수도 있습니다. – Danny

+0

http://www.w3schools.com/jsref/met_win_setinterval.asp 정말 낮은 간격을 설정하면 더 빨리 업데이트 될 수 있지만 많은 사용자가있는 경우 많은 HTTP 요청이 생성된다는 점을 기억하십시오. 많은 경우 사용자 트래픽 및 서버 통계를 기반으로 서버가 처리 할 수있는 간격과의 간격을 조정해야합니다. – Danny