PHP变量返回到";“违约”;在随后的AJAX调用中

PHP变量返回到";“违约”;在随后的AJAX调用中,php,jquery,ajax,scope,Php,Jquery,Ajax,Scope,我试图在另一个if语句中使用变量集,但它始终返回未定义的。这是PHP代码: if(isset($_POST['bookingTime'])){ $bookingTime = $_POST['bookingTime']; $bookingDate = $_POST['theDate']; $dbDateTime = $bookingDate." ".$bookingTime; echo json_encode($dbDateTime); exit; } i

我试图在另一个if语句中使用变量集,但它始终返回未定义的。这是PHP代码:

if(isset($_POST['bookingTime'])){
    $bookingTime = $_POST['bookingTime'];
    $bookingDate = $_POST['theDate'];
    $dbDateTime = $bookingDate." ".$bookingTime;
    echo json_encode($dbDateTime);
    exit;
}

if(isset($_POST['bookingPwd'])){
    $pwd = $_POST['txtBookingPwd'];
    //Get the $dbDateTime variable???
    echo $pwd;
}
$dbDateTime
变量被设置为对AJAX请求的响应,并返回jQuery,但我需要用于数据库查询的变量。如何在另一个if语句中使用该变量?我觉得在我对php的理解中缺少了一些真正基本的东西。我试过环球,但运气不好

更新

删除
退出
没有任何区别
$dbDateTime
变量仍然不显示在第二条if语句中。这是我运行测试的PHP代码:

if(isset($_POST['bookingTime'])){
    $bookingTime = $_POST['bookingTime'];
    $bookingDate = $_POST['theDate'];
    $dbDateTime = $bookingDate." ".$bookingTime;
    // echo json_encode($dbDateTime);
    // exit;    
}

if(isset($_POST['bookingPwd'])){
    $pwd = $_POST['txtBookingPwd'];
    //Get the $dbDateTime variable???
    echo $dbDateTime;
    echo $pwd;
    $booking->newBooking($dbDateTime, $pwd);
}
该变量是从AJAX请求中设置的,其时间值是从HTML表中获取的。然后会打开一个模式,供用户输入他/她的密码,以便在选定的时间预订球场。我在想,可能PHP没有存储值,因为变量是在不同的操作中设置的

第二次更新

会话可以工作,但尝试通过下一个AJAX调用传递
$dbDateTime
的值。这是jQuery代码:

var bookingTime;
var dbDatetime;

$('.courtBook').click(function() {
    // Find the row
    var $row = $(this).closest('tr');
    // Find the text
    var bookingTime = $row.find('.courtTime').text()+":00";
    var theDate = $('#theDate').text();

    $.ajax({
        url: 'index.php?page=booking', 
        type: 'POST',
        dataType: 'json',
        data: {'bookingTime': bookingTime, 'theDate': theDate},
        success: function(data){
            var dbDatetime = data;
            alert(dbDatetime);
        },
        error: function(){
            alert('Much wrong, such sad');
        }
    });
});

$('#btnBookingPwd').click(function(){
    console.log(bookingTime);
    console.log(dbDatetime);
});

在last click函数中,变量显示为未定义。那么,这在jQuery中是如何工作的呢?

您的HTML页面和PHP脚本不交换有状态数据

每次AJAX代码在HTML页面中运行时,都会对PHP脚本进行新的调用。每次调用PHP脚本时,变量都会根据代码以默认状态开始。如果希望在一个AJAX调用到下一个AJAX调用之间使用变量,则必须在下次调用PHP脚本时发送该变量

尝试将返回的dbDateTime值作为参数添加到后续AJAX调用中,我认为您将走上正确的道路

更新

你的阿贾克斯就快到了。尝试在此处删除
var

    success: function(data){
        var dbDatetime = data;
        alert(dbDatetime);
    },

如果,则停止执行到达第二个
。我不明白的是你怎么会认为它没有定义。。。如果第一个
If
为false,
$dbDateTime
未定义
,但如果为true,则不会到达该点。。。现在,如果您正在做的是继续发送对该php的请求,那么您可能希望使用SESSIONs来保留
$dbDateTime
中的值,以便下次您可以访问它……您是在发出两个单独的AJAX请求吗?也就是说,这个PHP脚本是否被分别调用了两次?@AndrewKozak它是从一个HTML表中调用的,该表的时间值取自所选行。然后会打开一个模式,供用户确认所选时间并输入密码。我需要将变量传递给这个modal和db查询来更新表。是的,这个脚本可以被调用很多次,但是都来自同一个地方。你必须把它想象成每次请求都重新加载php。这样,就不会设置任何变量,因此您需要a来跟踪以前的值:D。这就是问题所在。脚本每次终止之前都会“忘记”它曾经运行过。每个新实例都好像以前从未运行过一样。谢谢。我将在Xmas结束后立即尝试:-)刚刚尝试将ajax响应作为变量添加,但在控制台中检查时发现它是未定义的。我会用我在JS中的悲伤尝试更新我的答案。抱歉发垃圾邮件:-/这不是垃圾邮件;社区的目的是解决问题并记录答案以备将来参考。您现在在jQuery中遇到了一个范围问题。从成功回调中的
dbDatetime
之前删除
var
。感谢您的回答。它工作得非常出色。我认为这是我的应用程序更好的解决方案。我不知道在定义变量时只使用
var
,而在定义值时不能使用它。现在我知道了,我永远不会忘记;-)再次感谢你的帮助!如果您对提供的答案感到满意,请向其他人说明已找到解决方案。