如何在php脚本中实现确认警报?

时间:2016-05-23 14:25:55

标签: javascript php jquery

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

1 个答案:

答案 0 :(得分:1)

是的,你走在正确的轨道上。在这种情况下(没有重新加载页面)在服务器和客户端之间进行通信的唯一方法是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,你必须做一些测试。我总是习惯于自己有意识地设置它。

EDIT 警告:以下是未经请求的建议。

1)你可能想要考虑你的jQuery成功函数来接收所有clear in one函数,并实现失败函数来处理某些状态代码上的“not all clear”以识别你正在响应的用例。见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()回调方法自jQuery 1.8起不再使用。要准备最终删除的代码,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

*编辑2因为OP询问POST而不是GET