javascript - 如何从数据表的输入端发出带有 keyup 事件的 ajax 请求?
问题描述
我需要在数据表的一侧进行 ajax 调用。我有一个不在我的数据表中的输入。基本上我需要听那个输入和 onkeyup 事件我想为我的数据表发出 ajax 请求,并用返回的 ajax 请求数据提供我的表。
这是我的桌子:
var table = $('#bootstrap-data-table-export').DataTable({
lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
columnDefs: [{
targets: -1,
data: null,
defaultContent: " <button class='btn btn-sm table-button-dark' > <i class='fa fa-archive fa-xs' ></i></button> <button class='btn table-button-dark btn-sm' > <i class='fa fa-eye fa-xs' ></i></button> <button class='btn table-button-dark btn-sm' > <i class='fas fa-download fa-xs' /></button>"
}],
language: {
lengthMenu: "Sayfa Başına _MENU_ Kayıt",
zeroRecords: "Böyle Bir Kayıt Yok",
info: "_PAGE_ Sayfanın _PAGES_ . Sayfasındasınız",
infoEmpty: "No records available",
infoFiltered: "(Toplam _MAX_ Filtrelendi)",
search: "Ara",
paginate: {
previous: "Önceki",
next:"Sonraki"
}
}
});
这是我的ajax请求:
function getDT(data) {
$.ajax({
method: 'POST',
data: data,
url: '/api/ajax/SeriesList',
}).done(function (result) {
console.log(typeof result);
result = JSON.parse(result);
$('#bootstrap-data-table-export').DataTable().clear();
$('#bootstrap-data-table-export').DataTable().rows.add(result.data).draw();
});
}
我可以更改此代码中的所有内容,这没关系。我真的需要一个答案。
解决方案
好的,我解决了这个问题。正如@Bulent 所说,我创建了一个函数
function CustomInitTable() {
var table = $('#bootstrap-data-table-export').DataTable({
lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
columnDefs: [{
targets: -1,
data: null,
defaultContent: " <button class='btn btn-sm table-button-dark' > <i class='fa fa-archive fa-xs' ></i></button> <button class='btn table-button-dark btn-sm' > <i class='fa fa-eye fa-xs' ></i></button> <button class='btn table-button-dark btn-sm' > <i class='fas fa-download fa-xs' /></button>"
}],
ajax: {
method: "POST",
url: "/api/ajax/IssuedInvoiceController",
data: RequestObject
},
"bDestroy": true,
language: {
lengthMenu: "Sayfa Başına _MENU_ Kayıt",
zeroRecords: "Böyle Bir Kayıt Yok",
info: "_PAGE_ Sayfanın _PAGES_ . Sayfasındasınız",
infoEmpty: "No records available",
infoFiltered: "(Toplam _MAX_ Filtrelendi)",
search: "Ara",
paginate: {
previous: "Önceki",
next: "Sonraki"
}
}
});
}
然后我从我的 searchRequester 函数中调用了我的 CustomInitTable 函数。
function searchRequester(id) {
RequestObject[id] = $(`#${id}`).val()
CustomInitTable()
}
该搜索请求函数绑定到我的 html 输入 onkeyup 事件。我知道这可能不是这个问题的最佳解决方案。如果我发现比这更好的东西,我会在这里更新。
重要的!您必须将 "bDestroy":true 添加到您的数据表中,否则您将数据表初始化两次,这是不允许的。
推荐阅读
- r - R:更高效地将数据框拆分为列表
- vuejs2 - vue-test-utils & jest:如何测试单个文件组件过滤器?
- java - 如何解决自动化代码中的错误?
- django - has_object_permission 未调用
- python - PySpark 特征向量允许 NULL 值
- python - Python 2.7 和 Appengine ő/ű 字符显示为“?”
- python - Python Excel COM 互操作:强制无头模式并阻止用户输入
- javascript - 如何在 codeigniter 中生成此代码 mysql_fetch_array
- tsql - 从联接中获取公共记录
- java - 从基本时间间隔中减去一个间隔后如何获取剩余间隔列表