2013-04-13 2 views
0

이 JQuery와 Datatables 플러그인을 사용하여에 관한 것입니다 :Datatables 아약스 원하지만, 로컬 전용 (DOM 스타일) 필터

내 서버 측 소스를 사용하고 싶습니다

하지만 필터의 관점에서, 나는 계속 원합니다 그것 'DOM 방식'만약 내가 무슨 뜻인지 알면 .. 즉, 서버에 새로운 XHR 요청을 발사하지 않고 간단하게 이미 채워진 것에 대한 작업.

권장 사항/일반적으로 허용되는 최상의 방법은 무엇입니까 ??

+0

당신이 조금 정교한 수주십시오? 위의 내용에서 처음으로 서버 측 소스에서 dataTable을 채우려는 것으로 추측하고 있습니까? 또한 서버 측 소스는 무엇입니까? – dev

+0

안녕하세요 @vietech, 내 서버 측 소스는 DataTable이 행을 채우는 데 필요한 모든 것을 뱉어내는 일반적인 PHP 스크립트입니다. 예, 문제는 서버에'bDeferRender'를 사용하는 쿼리가 하나만 필요하다는 것입니다. 주요 관심사는 '검색'상자의 변경 사항입니다. ** 더 이상 쿼리를 실행하지 말고 즉시 사용할 수있는 것이 무엇이든 필터링해야합니다. 탁자. – Lim

답변

0

이것은 달성하려는 작업을 수행하는 올바른 방법이 아니지만 dataTables를 사용했을 때 CSV 파일을 사용하여 페이지가로드 될 때 한 번 DOM에 테이블을 채우기 시작했습니다. 완료되면 dataTable을 초기화합니다. 따라서 하나의 요청 만 있습니다. 지금은 같은 일을하고 있지만 CSV 파일 대신 Google 스프레드 시트를 사용하고 있습니다.

나는 내 테이블이 매우 기본적이고별로 크지 않다는 것을 지적 할 것이다.

하지만이 문제는 AJAX를 사용하여 PHP 페이지에서 데이터를 검색하고 HTML 테이블을 만든 다음 dataTable을 초기화하는 방식으로 진행됩니다.

같은 뭔가 .....

$.ajax({ 
    type:'GET', 
    url:'../yourdatasource.php', 
    success: function(data){ 
     // Your code to create the HTML table 
     $('#yourTable').dataTable(); 
    } 
}); 

나는 거기에이 작업을 수행하는 더 좋은 방법은 아마도하지만 일의 단일체를 유지하려면 말했듯이.

+0

그게 바로 제가 시작한 일입니다! 일부 페이지 전환 콜백 및 기타 기능을 추가하고 DataTables에서 기본적으로 수행하려는 작업을 이미 지원하는 경우 휠을 다시 발명 할 수 있다고 생각할 때까지 시작되었습니다 ... 더 나은 방법이 있는지 확인하고 싶었습니다. @vietech에게 감사합니다. – Lim

0

내가 이것을 필요로했기 때문에 이것에 대해 생각했습니다. 그러나 몇 시간 후에 나는 해결책을 찾는다. Datatables 개념은 두면을 가지고 있습니다. 왼쪽은 DOM 처리이고 오른쪽은 서버 측입니다. 그 두 가지의 차이 ...

DOM 처리 :
-로드 소스 데이터
- 모든 상호 작용이다 - 소스 데이터로 작업

서버 측 처리
-
가로드 소스 데이터 XHR 요청으로 보냈습니다.
(출처 : Enhancing-HTML-tables-using-a-JQuery-DataTables-pl "이 모드에서는 플러그인이 사용자와의 상호 작용 만 처리하며 모든 처리는 서버 측에서만 수행됩니다.")

DOM은 다음과 같이 작동하므로이 두면을 함께 사용할 수 없습니다. 로드 된 데이터와 서버 측 데이터 (데이터베이스)가 작동합니다. 서버 측 처리에서이 기능을 사용하려면 DOM이 "필터링"이고 서버 측이 "검색"이기 때문에 이것이 잘못된 생각이라고 생각합니다. 그들 사이에 가장 큰 차이가 있다면. 사용자가 데이터를 "필터링"하려는 경우 올바른 결과를 보장 할 수 없습니다.

많은 레코드가있는 경우 서버 측을 사용해야합니다.
그렇지 않으면 데이터를로드하고 DOM 작업을 사용하십시오.

그리고 시도해보십시오.나를

이 좋은 하루를 가지고
http://datatables.net/ref#bServerSide

나는이 도움이 당신을 희망

편집 원격 서버를 통해로드 된 필터 데이터로부터 데이터를로드하려면

DOM 필터를 사용하면 "sAjaxSource": "xhr.php"를로드 데이터로 사용할 수 있지만 bServerSide를 지정/사용하지 마십시오. 그것은 잘 작동합니다.

http://datatables.net/ref#sAjaxSource

+0

예, 잠시 후에 아마 내가하고 싶었던 일을하기 위해 datatables의 디자인에 포함되지 않을 것이라고 생각했습니다. 사실, 나는 @vletech 대답 lol – Lim

+0

대답에 의지 결국. 이게 내가 너에게하고 싶은 말이다. 이 조합을 사용하는 것은 나쁜 생각입니다. 그러나 내 링크를 확인하셨습니까? @vletech 대답보다 훨씬 명확 할 수 있습니다. – daremachine