我希望用户能够单击表,并根据他们单击的行-它会用与该行相关的内容(MYSQL查询)填充模式,并打开模式。
我尝试执行以下操作:-加载表内容-使用jQuery单击表时-使用AJAX通过单击的行信息发布到PHP文件-使用行信息执行MYSQL查询- 填充具有收集的内容的模态-打开模态
我遇到的问题是,因为这是一条MYSQL语句,并且该函数是非阻塞的,所以在模式开始打开时尚未声明变量。Web编程并不是我的强项,所以我确定我缺少一些简单的东西。
提前致谢!
编辑:
jQuery / AJAX
$('#alerts tbody').delegate('tr', 'click', function() { var id = $('td:eq(0)', this).text(); // Gets the ID of the row // PHP Method (below) // Passes ID through to PHP $.ajax({ url: "alerts.php", method: "GET", data: {id: ID}, async: true, done: function() { loadModalFunction(); } }); });
的PHP
<?php if (!empty($_GET['id'])) { // MYSQL Query // Sets global variables } ?>
模态
$('#info').find('.modal-title').text("Information (#" + id + ")"); $('#info').find('#modal-body-content').text("<?php echo $GLOBALS['content'];?>");
我知道,获取ID和获取内容是可行的,但是由于脚本初始化全局变量之前已加载模式,因此内容不会传递给ID。
好了,这是我在此问题上的实现,仅提供基础知识并让您相应地编辑自己的代码会更简单一些。
首先,我的整个模式内容是一个具有ID的div, <div id="modalcontent"> </div>
<div id="modalcontent"> </div>
然后,假设此按钮应打开并用数据填充我的模态
<a href="#" onclick="openModal()">Open</a>
openModal()看起来像这样
$.post("alerts.php", { id: ID }, function(data) {//data will contain whatever alerts.php prints document.getElementById("modalcontent").innerHTML = data;//insert data into modal $('#my-modal').modal('toggle');//open modal });
同样,有很多方法可以做到这一点。有更好的方法可以做到这一点。但是您应该了解这种工作方式,您只能在javascript中获取PHP文件的输出,并使用javascript编辑内容。您可以从另一个PHP脚本获取数据,该脚本将在需要时由javascript执行,但是PHP脚本本身无法修改已加载页面的内容。
使用此代码,并假设alerts.php意志echo "you have a notification";,<div id="modalcontent"> </div>将变更为<div id="modalcontent">you have a notification</div>,然后进行模态的切换。此方法还确保仅 在 获取数据后才打开模式,因此如果没有内部数据,则无法打开模式。
echo "you have a notification";
<div id="modalcontent">you have a notification</div>