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