我试图在一个模态窗口中将一个javascript变量传递给php,所有这些都在同一页面上,即edit.php。 (我将在以后的单独页面中弄清楚如何做到这一点)。同时,这个javascript代码可以将变量传递给模态:
<script type="application/javascript">
$(document).on("click", ".open-EditRow", function () {
var myGroupId = $(this).data('id');
$(".modal-body #groupId").val( myGroupId );
});
</script>
在模态窗口中,这是我一直在使用的代码:
<div class="modal hide fade" id="myEditModal">
<div class="modal-body">
<form class="well-small" action="" method="POST" id="modalForm" name="modalForm">
<?php ********* code *********** ?>
</form>
</div>
</div>
在表单内部是我的PHP代码,我从javascript成功检索groupId,并且我可以使用输入标记将其打印到屏幕上。这是代码:
<?php
$id = "<input type=\"text\" name=\"groupId\" id=\"groupId\" value=\"\" />";
echo "Group Id: " . $id;
$sql = "SELECT mygroup FROM mytable WHERE pk_tId = '" . $id . "'";
$result = mysql_query($sql);
if(mysql_data_seek($result)){
$row = mysql_fetch_row($result);
}
else {
echo "Cannot seek row: " . mysql_error() . "\n";
}
?>
sql语句在数据库中找不到$ id,因为$ id正在打印为输入标记。如何从输入标记中提取groupId,以便我的sql语句可以工作?
请举例。提前谢谢。
答案 0 :(得分:0)
PHP在页面加载之前执行。
当触发JS时,您可以通过调用PHP脚本并将id
作为参数传递来通过Ajax执行此操作:
<script type="application/javascript">
$(document).on("click", ".open-EditRow", function () {
var myGroupId = $(this).data('id');
$(".modal-body #groupId").val( myGroupId );
// ajax call
var url = "/path/to/script.php?id=" + myGroupId;
$.get(url, function(data){
// do something with the result
});
});
<script>
一旦得到响应,您也可以打开模态,如果有错误,请不要打开它并显示错误消息。但这取决于你的用例。
<强>更新强>
您的PHP脚本看起来基本上与您的代码类似,不同之处在于您从请求中获取id
作为参数。尝试这样的事情:
<?php
$id = $_GET['id']
$sql = "SELECT mygroup FROM mytable WHERE `pk_tId`='$id'";
$result = mysql_query($sql);
if($result) {
if(mysql_num_rows($result) == 1) {
$row = mysql_fetch_assoc($result);
echo $row;
}
else {
echo "Cannot seek row: " . mysql_error() . "\n";
}
}
else {
echo "Cannot seek row: " . mysql_error() . "\n";
}
?>
答案 1 :(得分:0)
我最终在模态a href中添加了一个onclick函数,并创建了一个cookie,一旦打开模态,我就抓住了它。当我关闭模态时,我使用javascript来清除cookie。