【发布时间】:2016-08-25 19:25:40
【问题描述】:
我正在使用带有 Ajax 的 jQuery 向 PHP 脚本提交表单。
用户将输入他们的详细信息,单击提交按钮,PHP 脚本将运行,并且将执行所需的操作或失败。
此时我想根据错误类型显示成功或错误消息。
<script>
$( "#contact-form" ).submit(function(event) {
event.preventDefault();
$.ajax({
url: "includes/contact-us.php",
type: "post",
data: $("#contact-form").serialize(),
success:function(data) {
alert(data);
},
error:function(){
alert("failure");
}
});
});
</script>
所以在我上面的 jQuery 中,当表单提交时,它会阻止默认的action="path to script.php" 然后执行提交。我已经这样做了,以防用户禁用了 Javascript,所以至少基本功能会在那里。
PHP
<?php
if(isset($_POST['contact']) && !empty($_POST['contact'])){
$link = new mysqli("example", "example", "example", "example");
if($link->connect_errno > 0) {
die('Unable to connect to database [' . $link->connect_error . ']');
}
$name = $_POST['name'];
$email = $_POST['email'];
$website = $_POST['website'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$stmt = $link->prepare("INSERT INTO contact (name, email, website, subject, message) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("sssss", $name, $email, $website, $subject, $message);
if($stmt->execute()){
$rtn = "Success";
echo json_encode($rtn);
} else {
$rtn = "Failed";
echo json_encode($rtn);
}
$stmt->close();
$link->close();
}
但是,在此示例中,警告框显示为空。 firebug 或 Apache 日志中没有错误。
是否有可能:当我使用 Ajax 执行提交时,我可以收到 echo "Text from error or success box";,然后我可以将其放入引导警报中?
我正在编写的代码是新的,因此我会考虑适应新的库。这纯粹是为了增强 UI 以显示错误或成功消息,如果用户禁用了 javascript,则不会阻止表单默认操作 - 他们只是不会看到成功或错误消息。
我看到的是"Javascript promises",如果在可用性方面更好的话,我不介意使用 Javascript,因为我不想在提交时冻结浏览器。
感谢您的宝贵时间
【问题讨论】: