我有一个PHP脚本,用于检查是否已在去年预订了用户。如果还没有,则无法进行预订,但是我有一个Alertify JavaScript,它将提示用户是否要继续/覆盖预订。
我知道他们是客户端和服务器端。所以这是我到目前为止所做的。
如果$ retemp为1,那么它在去年还没有被预订,我想要一个带有替代选项的警报。我尚未完全了解,我认为POST和ajax的方向正确。
if($retemp == 1)
{
?>
<script type="text/javascript">
alertify.set({ labels: {
ok : "Yes",
cancel : "No"
} });
// confirm dialog
alertify.confirm("Proceed With Booking", function (e) {
if (e) {
$.ajax({
data: {confirm: 'yes'},
url: 'phpurl.php',
method: 'POST', // or GET
success: function(msg) {
alert(msg);
}
});
} else {
// user clicked "cancel"
}
});
</script>
最佳答案
是的,您的方向正确。在这种情况下(没有重新加载页面)在服务器和客户端之间进行通信的唯一方法是ajax。
您的php文件“ phpurl.php”需要接收$ _POST ['confirm'],以及要通过“ data:”对象中其他数据点传递给它的任何识别信息。然后至少需要执行以下操作
1)发送http标头状态代码
2)输出一个字符串作为输出
可以使用http://php.net/manual/en/function.header.php设置http标头状态代码
//i.e. for a minimal success setting
header(200);
echo 'Whatever Message You want the Ajax call to see';
有关使用json响应ajax请求的最佳实践,请参见http://jsonapi.org。对于此类事情,始终是一个合理的选择。
顺便说一句,标题可能会自动设置为200,您必须进行一些测试。我总是养成自己有意识地设置它的习惯。
编辑
警告:不请自来的建议如下。
1)您可能想考虑您的jQuery成功函数在一个函数中接收所有清除,并实现故障功能以处理某些状态码上的“不是全部清除”以识别您正在响应的用例。见https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
2)jQuery $ .post是$ .ajax的可访问简写版本-请参阅注释
https://api.jquery.com/jQuery.post/
3)从上面的链接
jQuery 1.5中不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调方法。要准备将其最终删除的代码,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。
*编辑2,因为OP询问有关POST的信息未获得
关于javascript - 如何在PHP脚本中实现确认警报?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37393662/