我需要使用发送到模态窗口的ID从数据库表加载数据。
基本上,当网格加载时,有多列。其中两个特别称为CONTAINER_ID和WORKFLOW。
无论为WORKFLOW返回什么,都会打开一个名为#mySVCModal的MODAL弹出窗口。以下是示例代码:
while(($Row = mysql_fetch_assoc($QueryResult)) !== FALSE)
{
echo "<tr";
echo "<td style=\"width: 50px;\">{$Row[CONTAINER_ID]}</td>";
echo "<td style=\"width: 50px;\"><a class=\"open-container\"
data-toggle=\"modal\" href="#mySVCModal\"
data-cont=\"{$Row[CONTAINER_ID]}\">{$Row[WORKFLOW]}</a></td>";
echo "</tr>";
}
当用户点击{$ Row [WORKFLOW]}时,会打开一个模态窗口,其中包含来自同一行的CONTAINER_ID。
以下是实现这一目标的JavaScript:
echo "<script type=\"text/javascript\">
$(document).on(\"click\", \".open-Container\", function() {
var myContainer = $(this).data('cont');
$(\".modal-body #containerID\").val( myContainer );
});
</script>";
此时,模态窗口打开,我可以显示CONTAINER_ID。以下是显示CONTAINER_ID的代码:
<div id="mySVCModal">
<form action="" method="POST">
<input type="text" name="containerID" id="containerID" class="containerID" />
*** more code here ***
</form>
</div>
所以没问题。 CONTAINER_ID显示在名为“containerID”的INPUT字段中。
现在我需要做的是当模态窗口打开时,“containerID”被发送到PHP变量,该变量将从名为WORKFLOW_TABLE的数据库表中检索WORKFLOW信息。
当我尝试将containerID转换为PHP变量并将其回显时,不会显示任何内容:
<?php
$containerID = $_POST['containerID'];
echo "this is containerID " . $containerID; // only displays the text, not the $containerID
?>
我知道一旦我可以直接获取上面的代码以在ECHO中显示containerID,我就可以运行它的查询。
所以基本上,我需要做的是当模态窗口打开时,PHP将采用containerID并运行“SELECT * FROM WORKFLOW_TABLE,其中CONTAINER_ID ='containerID'”;
WORKFLOW_TABLE中的内容应自动显示在各种INPUT字段中。我现在只使用INPUT字段。那就是重点。
总而言之,我需要使用containerID显示使用WORKFLOW_TABLE显示内容的模式。
我希望我能清楚地说明这一点。
请帮忙。
答案 0 :(得分:0)
听起来你需要一个AJAX查询。
<script>
function loadData()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "db_query.php?containerID = " + document.getElementById('containerID').getAttribute('value'), true);
xmlhttp.send();
}
window.onload = loadData;
</script>
<div id="myDiv"></div>
对于任何可能的缺陷提前抱歉,我实际上并没有这样做。
答案 1 :(得分:0)
当您正在加载模式时,您似乎并未真正将表单提交到服务器。
由于您可能不想重新加载整个页面以显示模式,因此您应该使用异步请求按需请求模态内容。由于您的示例代码使用了jQuery,我在这里使用了相同的代码。 (see the jQuery.load() documentation for more info)
echo "<script type=\"text/javascript\">
$(document).on(\"click\", \".open-Container\", function() {
var myContainer = $(this).data('cont');
$(\".modal-body #containerID\").val( myContainer );
$('.modal-body').load(
'yourPHPscript.php',
{ containerID: $('#containerID').val()}
);
});
</script>";
然后您的PHP脚本应该类似于此(注意从POST到GET的更改):
<?php
$containerID = $_GET['containerID'];
echo "this is containerID " . $containerID;
?>