2016-09-13 4 views
0

ajax 속성을 사용하여 서버에서 테이블 데이터를 가져 와서 dataSrc 속성을 사용하여 변환하려면 Datatables 플러그인을 사용하고 있습니다. 내 datatables 정의 :datatables ajax 응답 성공시 dataSrc 함수가 호출되지 않음

var my_table = $('#my_table').dataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": { 
     "url": "/my/url", 
     "type": "POST", 
     "dataSrc": function(json) { 
      console.log('json', json); 
      return format_my_table_data(json.data); 
     } 
    }, 
    "deferLoading": found_rows, 
    "data": initial_my_table_data, 
    "ordering": true, 
    "order": [[1, "desc"]], 
    "lengthMenu": [ 
     [25, 50, 100], 
     [25, 50, 100] 
    ], 
    "columns": my_table_columns 
}); 

은 초기로드는 잘 작동과 열을 주문하고 때로는을 작품 을 검색하지만 대부분 나는 유효한 JSON 성공적으로 아약스 호출 반환을 참조 (나는 jsonlint.com를 사용하여 검증)과 테이블에 붙어 "처리 중 ..."가끔씩 테이블이 전혀 변경되지 않습니다. 상기 서버로부터

JSON : {"recordsTotal":379,"recordsFiltered":378,"draw":25,"data":[{...}]}

온 따라 600ms의 및 1600ms의 총 1 시간마다 (비슷 난 Ajax 요청이 전송되는 것을 볼 수있는 콘솔의 네트워크 응답을 검사 반환 된 행 수) 내 console.log dataSrc 함수 안쪽에 및 콘솔에서 자바 스크립트 오류가 호출되지 않습니다. 뭐라 구요?

+0

서버에서 요청한 것과 동일한 'draw' 매개 변수를 반환하고 있습니까? 요청과 응답의 'draw'값이 일치하지 않으면 플러그인이 응답을 무시할 수 있습니다. –

+0

@ Gyrocode.com 반환 된 결과의 수가 드로우 값보다 작을 경우 드로우 값이 3 일 때만 3 행을 찾을 수 있다고 가정 할 경우는 어떨까요? 또는 어쩌면 나는 "무승부"가 무엇인지를 오해하고 있습니다. –

답변

1

스크립트는 draw 매개 변수를 요청의 draw 매개 변수와 동일한 값으로 반환해야합니다. 나는 그것이 1에서 시작하고 모든 요청마다 증가한다고 생각합니다. manual 가입일

:

draw

이 객체에 대한 응답임을 연신 카운터 - 데이터 요청의 일부로서 전송 된 파라미터와는 draw. 보안상의 이유로은 XSS (Cross Site Scripting) 공격을 방지하기 위해 draw 매개 변수로 보낸 내용을 단순히 클라이언트에 다시 보내는 것이 아니라이 매개 변수를 정수로 전송하는 것이 좋습니다.

+0

고맙습니다. 그리기 속성이 테이블의 개수가 아닌 반환 된 행의 수로 잘못 읽었습니다. 반환 된 무승부 가치를 전달 된 항목으로 변경하여 현재 작동합니다. –