JQuery數據表廣泛用於我們的web應用程序,並且通常它們不會產生問題。但有一個這樣的錯誤,在fnReloadAjax執行過程中,它提供了錯誤「TypeError:k is undefined」,它來自dataTables.js行,其中「fnServerData:function(e,j,m,k) 「發生。這裏是dataTable的定義:jQuery dataTable 1.9.4 fnReloadAjax給出「TypeError:k is undefined」錯誤
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);
}
}
另存實際工作,但數據表沒有得到,因爲錯誤的重載。它應該回到那個URL和「getData」並重新加載,但是它被卡在fnServerData中,因爲k是未定義的。這個k對應於非最小fnServerData聲明中的oSettings,但是我已經完成了一個console.log並驗證了fnGetSettings返回了oSettings的預期副本。最初,url並沒有被傳遞給fnReloadAjax的調用,所以我認爲這可能是一個問題並添加它,但得到了相同的結果。
所以我不明白爲什麼它是未定義的。我想我的下一步將是使用非最小版本的dataTables.js,並在那裏添加一些調試,但我希望這裏有人會發現一些簡單的事情,在代碼中做錯了。