jquery - 在按钮单击时使用 ajax 调用数据在第二次单击时不能在同一个按钮上工作
问题描述
我有一个按钮,它打开一个 Bootstrap 模式弹出窗口,并使用数据表填充了数据行。这工作正常。单击该按钮时,它会运行 Ajax 请求以获取数据并将其显示在模式窗口中。我可以在控制台工作中看到 Ajax 请求。
模式弹出窗口有一个“关闭”按钮,可以关闭模式,即关闭它。如果我然后再次单击该按钮以打开相同的模式,则在控制台窗口中看不到 Ajax 请求,而控制台窗口又不会重新加载数据。每次单击按钮以获取对数据的任何更改时,我都需要触发 Ajax 请求。
谁能看到为什么第二个按钮单击没有调用 dataTables Ajax 脚本。我的逻辑告诉我,每次单击按钮时都应该运行 Ajax 调用。如果我刷新页面,单击按钮会按预期工作。
按钮:
<a class="cursoritem" data-toggle="modal" id="room_override_data_modal"><span class="glyphicon glyphicon-plus"></span>Room override</a>
模态窗口:
<div id="open_current_room_display_overrides_data_modal" class="modal fade" data-keyboard="false" data-backdrop="false" style="z-index:111">
<div class="modal-wayfinder-signage" modal-ku style=" max-height:85%; margin-top: 35px; margin-bottom:50px;" modal-lg>
<div class="modal-content-search">
<!-- END -->
<div class="modal-header-current-signage">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<div class="modal-title-current-signage" id="HideTitle" style="cursor:move">Current room display override schedule.</div>
</div>
<div class="modal-body-room-override">
<table name="timeline" border="0" cellpadding="0" cellspacing="0" class="table table-striped" id="roomoverrideTable" style="width:100%; min-width:800px" data-role="datatable" data-info="false">
<thead>
<tr class="CenterHeaderSignageData">
<th><div class="LeftPadding">Room</div></th>
<th><div class="ImagePadding">Image</div></th>
<th>Promotion</th>
<th>From</th>
<th>To</th>
<th><div class="RightPadding"></div></th>
</tr>
</thead>
<tbody class="CurrentSignage-rows">
</tbody>
</table>
</div>
<div class="footer_search_buttons">
<div class="room-overide-message">Room overrides take priority if the room has a booking</div>
<div id="foot-button-margin-current-room-display-override-schedule">
<button id="NewRoomOverrideform" type="button" class="btn btn-success btn-xs">New override</button>
<button id="NewRoomOverridecancelform" type="button" class="btn btn-secondary-edit btn-xs" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
dataTables 和 Ajax 调用
$(document).on("click", "#room_override_data_modal", function() {
var hotelid ='<?php echo $_SESSION['_amember_user']['hotelid'];?>';
$('#open_current_room_display_overrides_data_modal').modal('show');
$(".modal-body-room-override").css("padding",'2px');
$(".modal-body-room-override").css("margin",'2px');
var imagepath = '../../../../conf/conf_images/roomoverride/' + hotelid + '/';
$('#roomoverrideTable').DataTable({
"ordering": false,
retrieve: true,
paging: false,
searching: false,
bInfo : false,
responsive: true,
fixedHeader: true,
ajax: {
url: 'get_room_override.php',
dataSrc: ''
},
"columnDefs": [
{ className:"model-left-margin", "targets": [ 0 ] }
],
language: {
"emptyTable": "There are no promotional signage schedules set"
},
columns: [
{ data: 'RoomName',"sWidth": "15%" },
{ data: "PromoImage", "sWidth": "15%", render : function (data, type, full, meta)
{ return '<img src="' + imagepath + '' +data+'" class="WayfinderSignageImageModal"/>'; }
},
{ data: 'ClientName', "sWidth": "30%" },
{ data: 'PromotionFromDate', "sWidth": "20%" },
{ data: 'PromotionToDate', "sWidth": "15%"},
{ data: 'RecordID', render : function (data, type, full, meta) {
var recordid = full.RecordID;
console.log("RECORDID", recordid);
return '<input type="button" name="edit" value="Edit" data-id=' + recordid + ' class="btn btn-conf-view btn-xs edit_room_override">' }
},
]
});
});
解决方案
推荐阅读
- java - 如何将 php 源代码添加到 NetBeans 中的 maven java 项目?
- groovy - 在 Groovy 中使用 writeLine 复制输出
- ms-access - 访问 2013,LoadfromText 期间的错误 2128 表单
- r - 使用 Bootstrap 生成两个变量的相关性并计算置信区间
- salesforce - 更新 Salesforce:日期格式 Dataweave
- swift - 在 Swift iOS 中使用 unix 时间戳和时区获取我的 DateTime
- powershell - Query 与 Get-Member 有什么关系?
- php - Laravel 中显示关系对象名称的问题
- slurm - 如何让 slurm 为每个节点分配一个任务?
- reactjs - 如何将按钮锚定到卡片组件的底部?