2016-05-23 87 views
1

我有一个PHP脚本,用于检查用户是否在过去一年中被预订过。如果他们没有,那么他们不能被预订,但是我有一个警告JavaScript,它会提示用户是否希望继续/覆盖预订。 我知道他们是客户端和服务器端。所以在这里我到目前为止做了什么。如何在php脚本中实现确认提醒?

如果$ 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> 
+2

那么你到底需要什么帮助? –

+0

即时通讯努力理解,如何触发JavaScript脚本的其余部分从alertify?例如,如果是的话继续其余的PHP脚本,否则什么也不做。 – Bish25

回答

1

是的,你在正确的轨道上。在这种情况下(无需重新加载页面)服务器和客户端之间进行通信的唯一方法是ajax。

你的php文件“phpurl.php”需要接收$ _POST ['confirm'],加上你想通过你的“data:”对象中的其他数据点传递给它的任何标识信息。然后,它将需要在最小执行下列

1)发送一个HTTP头状态码 2)输出一个字符串作为输出

在HTTP报头的状态代码可以与http://php.net/manual/en/function.header.php

//i.e. for a minimal success setting 
header(200); 
echo 'Whatever Message You want the Ajax call to see'; 
被设置

请参阅http://jsonapi.org了解使用json响应Ajax请求的最佳做法。总是一个合理的选择去与这种类型的事情。

顺便说一句,标题可能会自动设置为200,你必须做一些测试。我总是习惯性地自己设定它。

编辑 警告:未经请求的建议如下。

1)你可能想要考虑你的jQuery成功函数在一个函数中接收全部清除,并实现失败函数来处理某些状态代码中的“不全部清除”,以确定你正在响应哪些用例。见https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

2)jQuery的$。员额是$阿贾克斯的访问速记版本 - 请看 https://api.jquery.com/jQuery.post/

3)笔记从上面的链接

的jqXHR.success (),jQuery 1.5引入的jqXHR.error()和jqXHR.complete()回调方法自jQuery 1.8开始不推荐使用。要准备代码以便最终删除它们,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

* EDIT 2,因为OP询问POST得不到

+0

谢谢,我会走了,让你知道我怎么走。 – Bish25

+0

听起来不错 - 仅供参考,我用一些其他可能有用的想法更新了我的答案。取决于你想要去的兔子洞的深度 –

+0

真的很感谢你的帮助,我有一个If语句来检查变量$ confirm是否等于yes。你提到一个GET,像这样?'$ confirm =(isset($ _ GET ['overridedate'])?$ _GET ['overridedate']:NULL);' – Bish25