我有一个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/

10-11 22:17
查看更多