我使用此代码将我的联系人信息保存到MySQL数据库中,并应用JQuery确认功能来确认数据提交,但是当确认对话框打开时PHP脚本无法停止,或者Php绕过JQuery确认代码并将数据提交到数据库中,关于这个问题的任何想法。
<?php
//Database connection.
include'connect.php';
if(isset($_POST['name'])&&isset($_POST['email'])&&isset($_POST['contact'])){
$name = $_POST['name'];
$email = $_POST['email'];
$contact = $_POST['contact'];
if(empty($name)&&empty($email)&&empty($contact)){
echo'
<script>
$(document).ready(function(){
alert("Please fill all fields.");
});
</script>
';
}else{
if($sql = mysql_query("INSERT INTO contact_list VALUES ('', '".mysql_real_escape_string($name)."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($contact)."')")){
echo'
<script>
$(document).ready(function(){
confirm("Are you sure to Saved Contact?");
});
</script>
';
}else{
echo'
<script>
$(document).ready(function(){
alert("Something is wrong, Please check");
});
</script>
';
}
}
}
?>
<html>
<form action="#" method="POST">
Full name:<input type="text" name="name">
Email:<input type="text" name="email">
Contact:<input type="text" name="contact">
</form>
</html>
最佳答案
PHP由服务器执行,而javascript由客户端执行。并且你希望服务器“等待”或“停止执行”,直到客户端执行某些js代码。嗯,这是不可能的。
您必须将 PHP 代码拆分为两个不同的 PHP 脚本:一个用于确认,另一个用于保存数据。例如,使用伪代码:
confirm.php
Hey, are you sure you want to save the data?
<a href="save.php">Yes, I'm sure</a>
保存.php
INSERT INTO 'blablabla' VALUES bla bla bla bla bla
当然,您不必将其拆分为两个脚本。您可以再添加一个 $_POST 参数,例如“confirmed=true/false”,而不是两个脚本,只需一个多一个 if () {} else {}
block 。
但想法是您必须将这两个操作分开,因为您无法使用 PHP 同时进行确认和保存。
<小时/>还有更多选项:
用户确认操作后,使用ajax运行“保存脚本”
使用 javascript 防止“保存脚本”在未经确认的情况下运行,例如:
<input type="submit" onclick="return confirm('Sure?');" value="Save"/>
关于PHP 绕过 jQuery 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16711874/