2014-07-07 5 views
0

다음과 같은 JavaScript 코드 (JQuery 및 datatable)를 사용하면 오류가 발생합니다. 유형 오류 : undefined is not function. 이 "searchTable = $ (TABLENAME) .dataTable가 ({"오류 와의 소스로하지만 (내가 자바 스크립트의 지식을 제한) 나에게 좋아 보이는 내가 감사하겠습니다에undefined는 dataTable.js가있는 함수가 아닙니다.

function checkTransaction(tableName, url, columns){

var columnList = []; 
for (var i = 0; i < columns.length; i++){ 
    columnList.push({ 
     "data": columns[i] 
    }); 
} 

for (var i = 0; i < 1; i++){ 
    columnList.push({ 
     "data": "id" 
    }); 
} 

$(document).ready(function(){ 
    var firstname = $("#firstname").val(); 
    var lastname = $("#lastname").val(); 
    var startDate = $("#startdate").val(); 
    var endDate = $("#enddate").val(); 
    searchTable = $(tableName).dataTable({ 
     "ordering": false, 
     "columns": columnList, 
     "columnDefs": [ 
      { 
       "targets": columns.length, 
       } 
     ], 
     "pagingType": "full_numbers", 
     "ajax": { 
      "url": url, 
      type: "POST", 
      data: {firstname: firstname, lastname: lastname, startDate: startDate, endDate: endDate}, 
      "dataSrc": "", 
      error: function(xhr, error) { 
       if (xhr.status == 400) { 
        alert('Bad Request. [400]'); 
       } 
       else if (xhr.status == 401) { 
        alert('User Unauthorized To Access Resource. [401]'); 
       } 
       else if (xhr.status == 403) { 
        alert('Access To Resource Forbidden [403]'); 
       } 
       else if (xhr.status == 404) { 
        alert('Requested Resource Not Found [404].'); 
       } else if (xhr.status == 500) { 
        alert('Internal Server Error [500].'); 
       } 
       else if (xhr.status == 503) { 
        alert('Service Unavailable [503].'); 
       } 
       else if (error === 'parsererror') { 
        alert('Requested JSON parsing failed.'); 
       } 
       else if (error === 'timeout') { 
        alert('Time out error.'); 
       } 
       else if (error === 'abort') { 
        alert('Ajax request aborted.'); 
       } 
       else { 
        alert('Uncaught Error.\n' + xhr.responseText); 
       } 
      }, 
     } 
    }); 

}); } 

크롬 포인트 누군가가이 오류의 원인을 설명 할 수 있다면.

추신 : jquery가 처음으로로드되고 jquery 라이브러리가 하나만로드되었는지 확인 했으므로 데이터 테이블 라이브러리도로드되었음을 확인했습니다. 감사합니다.

+0

당신은 JsFiddle을 추가 할 수 있습니까? – Lakshay

+0

@Lakshay 여기 JsFiddle http://jsfiddle.net/XLW7N/입니다. 그러나 자바 스크립트 코드로 작업하는 grails 컨트롤러가 있어야합니다. – azdonald

+0

@alnafie tableName은 checkTransaction 함수에 전달되는 매개 변수입니다. – azdonald

답변

0

DataTable 라이브러리의 로컬 복사본을 참조하면 문제가 해결되지만 DataTable CDN을 사용할 때 코드가 작동하지 않는 이유에 대해 의아해했습니다.

관련 문제