2014-01-27 81 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); 
    } 
} 

脚本在Chrome中工作正常,但无法在Firefox中运行,使我有以下错误:

的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); 
}