2014-01-27 3 views
0

서버 측 처리와 함께 Datatables를 사용하고 있으며 일부 필터링을 수행하기 위해 일부 쿼리를 내 쿼리에 추가해야합니다. 이 스크립트는 크롬에서 잘 작동Firefox ReferenceError : ... 정의되지 않음 문제

if($('#example').length) { 
    var oTable = $('#listings').dataTable({ 
     "bProcessing": true, 
     "bServerSide": true, 
     "sAjaxSource": ajax_url+'?action=load_table_data', 
     "fnServerParams": function (aoData) { 
      aoData.push({ "name": "filters", "value": get_table_filters() }); 
     } 
    }); 

    var tableFilterArray = {}; 
    //Setting up and changing the filters, etc... 

    function get_table_filters() { 
     return JSON.stringify(tableFilterArray); 
    } 
} 

하지만, 파이어 폭스에서 실행 실패 나에게 다음과 같은 오류 제공 :

ReferenceError가 : get_table_filters 여기

정의되지 않습니다이 내 설정이 같은 모습입니다 데모입니다 : http://jsfiddle.net/HaXUR/3/

무엇이 여기에 있습니까?

+1

방금 ​​oTable 위의 기능을 이동하려고 했 문? – adeneo

+0

@adeneo는 부모 함수의 범위 내에서 사용할 수있는 선언을 기능하지 않아야합니까? 나는 우리가 여기 모든 코드를 얻는다고 생각하지 않는다. –

+0

@dhsto : Firefox에는 명령문 블록에 나타나는 함수 선언을위한 특수 구문이 있습니다. 그것은 선언 대신 진술처럼 행동하기 때문에 호이스트되지 않습니다. 이것이 문제 일 가능성이 있지만 passatgt는 확실한 코드를 제공하지 못했습니다. –

답변

1
는 밖으로 get_table_filters 이동

은 if

if($('#example').length) { 
var oTable = $('#listings').dataTable({ 
    "bProcessing": true, 
    "bServerSide": true, 
    "sAjaxSource": ajax_url+'?action=load_table_data', 
    "fnServerParams": function (aoData) { 
     aoData.push({ "name": "filters", "value": get_table_filters() }); 
    } 
}); 
    var tableFilterArray = {}; 
} 

function get_table_filters() { 
    return JSON.stringify(tableFilterArray); 
} 
관련 문제