jQuery dataTable 1.9.4 fnReloadAjax给出“TypeError:k is undefined”错误

时间:2013-09-23 23:05:34

标签: javascript jquery datatable

JQuery dataTables在我们的Web应用程序中广泛使用,通常它们不会出现问题。但是有一个有这个错误的地方,在执行fnReloadAjax期间,它给出错误“TypeError:k is undefined”,它来自dataTables.js行,其中“fnServerData:function(e,j,m,k) “发生了。这是dataTable定义:

    url = '?p=user.creation_rules_browser&page_action=getData';
data_table = jQuery('#data').dataTable({
    bJQueryUI: true,
    sDom: '<"template-box"fl><"template-box"ip><"template-box"r><"ui-widget ui-widget-content ui-helper-clearfix ui-corner-all template-box" t><"template-box"p<"toolbar">>',
    sAjaxSource: url,
    bPaginate: false,
    bProcessing: true,
    bAutoWidth: false,
    bSort:false,
    bFilter:false,
    bInfo:false,
    aoColumns: [
                { "bSortable": false },
                { "bSortable": false },
                { "bSortable": false },
                { "bSortable": false },
                { "bSortable": false },
                { "bSortable": false },
                { "bSortable": false }
            ]
    } );

它完全加载,但是有一个带有操作菜单的列,可以让您编辑该行。弹出一个jQuery对话框,当你点击“保存”时执行以下命令:

jQuery.getJSON('index.php',{
    p: "user.creation_rules_browser",
    page_action: "edit_rule",
    rule_name: rule_name_val,
    target_field: $('#input_target_field').val(),
    action_value: action_value_val,
    action_set_to_blank: action_set_to_blank_val,
    id: data.id
}, function (json) { 
    if (json.error) {
        Dialog.alert({title: "Error Saving Rule"}, json.error);
    } else {
        jQuery(self).dialog('close');
        url = 'index.php?p=user.creation_rules_browser&page_action=getData';
        data_table.fnReloadAjax(url);
    }
}

Save实际上有效,但是由于该错误,dataTable不会重新加载。它应该回到那个url和“getData”并重新加载,但是它被卡在fnServerData中,因为k未定义。这个k对应于非min fnServerData声明中的oSettings,但是我已经完成了一个console.log并验证了fnGetSettings返回oSettings的预期副本。最初,在调用fnReloadAjax时没有传递url,所以我认为这可能是一个问题并添加了它,但得到了相同的结果。

所以我不明白为什么它没有定义。我想我的下一步将是使用非最小版本的dataTables.js,并在那里添加一些调试,但我希望这里有人会发现一些在代码中做错的简单事情。

1 个答案:

答案 0 :(得分:1)

没关系,我发现除了当前版本之外还加载了过时版本的dataTables和fnReloadAjax。把它解决了。