PHP变量返回到";“违约”;在随后的AJAX调用中
我试图在另一个if语句中使用变量集,但它始终返回未定义的。这是PHP代码: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(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
,而在定义值时不能使用它。现在我知道了,我永远不会忘记;-)再次感谢你的帮助!如果您对提供的答案感到满意,请向其他人说明已找到解决方案。