php / mysql 数据库更新后的 Javascript 弹出窗口
Posted
技术标签:
【中文标题】php / mysql 数据库更新后的 Javascript 弹出窗口【英文标题】:Javascript popup after php / mysql database update 【发布时间】:2014-04-05 03:38:06 【问题描述】:我拥有的是在客户端签署表单后更新数据库字段的 php。这可行,但我希望它在确认用户通过单击确定签名后重定向到新页面。如果他们点击 CANCEL,它将让他们留在同一页面上。
<?php
$username = 'joeblow';
require_once ("/mypath/include/connnect_db.php");
?>
<p>Please only submit this after above form is completely signed.</p>
<form id="item_complete" method="post">
<input name="submit" type="submit" form="item_complete" value="Submit After Signing">
</form>
<?php
if(isset($_POST['submit'])) //if the submit button is clicked
$complete = 'c';
$query = "UPDATE mytbale SET mycolumn='c' WHERE username='$username'";
mysqli_query($con,$query) or die("Cannot Update");
echo "<script> confirmFunction(); </script>";
require_once ("/mypath/include/disconnect_db.php");
?>
<script type="text/x-javascript">
function confirmFunction()
var r=confirm("Confirm that you have signed the form!");
if (r==true)
window.open("http://smartpathrealty.com/smart-path-member-page/");
else
</script>
我的问题是 php 更新数据库后 javascript 函数没有执行。
感谢您对此提出的任何建议或意见。
【问题讨论】:
PHP 在服务器上执行。 Javascript 在客户端上执行。你想要的是不可能的。您可以不让服务器端 PHP 代码触发客户端警报,然后等待客户端响应。 在用户提交表单后是否有重定向到页面。我非常愿意接受建议。 【参考方案1】:<script type="text/javascript">
function confirmFunction()
var r=confirm("Confirm that you have signed the form!");
if (r==true)
window.open("http://smartpathrealty.com/smart-path-member-page/");
else
</script>
<?php
if(isset($_POST['submit'])) //if the submit button is clicked
$complete = 'c';
$query = "UPDATE mytbale SET mycolumn='c' WHERE username='$username'";
mysqli_query($con,$query) or die("Cannot Update");
echo "<script> confirmFunction(); </script>";
require_once ("/mypath/include/disconnect_db.php");
?>
<script type="text/javascript">
window.onload = function()
<?php
if(submitted)
echo "confirmFunction();";
?>
</script>
【讨论】:
这会在点击提交按钮之前加载确认。 @user3376610 我为您的单页解决方案更新了答案。这个想法是让 window.onload 的内容依赖于 SQL 事务完成时设置的变量。当然,像其他人建议的多页面解决方案会更干净。【参考方案2】:您可以通过 ajax 发布表单,并在您的 php 中返回对 javascript 的响应。那就是你可以使用回调来触发新窗口。
这是一个 jquery 示例:
$.post('/myscript.php', foo: 'bar').done(function (response)
window.open(......);
);
【讨论】:
对不起,我根本不关注这个。【参考方案3】:我相信您使用相同的页面进行登陆和更新。您需要更新您的回声以添加 onload。
echo "<script> window.onload=confirmFunction(); </script>";
希望这是您正在寻找的。p>
【讨论】:
这会在点击提交按钮之前加载确认。 我的意思是从你的代码 sn-p 中添加回声。你只有 1 个在 if(isset($_POST['submit'])) .....,为什么它会默认运行?【参考方案4】:试试:
if (r==true)
window.open("http://smartpathrealty.com/smart-path-member-page/");
else
window.location = "PAGE THAT YOU WANT";
【讨论】:
这部分脚本已经正常工作,只是想弄清楚在用户提交表单并执行所有 php 之后,用户将看到一个弹出确认窗口。【参考方案5】:问题是您使用单独的<script>
标记并在定义之前调用该函数。这两个一起工作不好。另外,我很确定<script type="text/x-javascript">
无论如何都不起作用since it's outdated 而你想要<script type="text/javascript">
您可以执行以下操作:
上移功能并修复x-javascript
:
<?php
$username = 'joeblow';
require_once ("/mypath/include/connnect_db.php");
?>
<p>Please only submit this after above form is completely signed.</p>
<form id="item_complete" method="post">
<input name="submit" type="submit" form="item_complete" value="Submit After Signing">
</form>
<script type="text/javascript">
function confirmFunction()
var r=confirm("Confirm that you have signed the form!");
if (r==true)
window.open("http://smartpathrealty.com/smart-path-member-page/");
else
</script>
<?php
if(isset($_POST['submit'])) //if the submit button is clicked
$complete = 'c';
$query = "UPDATE mytbale SET mycolumn='c' WHERE username='$username'";
mysqli_query($con,$query) or die("Cannot Update");
echo "<script> confirmFunction(); </script>";
require_once ("/mypath/include/disconnect_db.php");
?>
小提琴:Fiddle
【讨论】:
这帮助我找到了我在底部发布的解决方案。 好的,太好了。我很高兴能帮上忙。以上是关于php / mysql 数据库更新后的 Javascript 弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章