2015-12-23 17 views
4

Я пытаюсь использовать набор переменных в другом операторе if, но он продолжает возвращать неопределенные. Это PHP код:PHP-переменные, возвращающиеся к «по умолчанию» в последующих вызовах AJAX

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. Я пробовал с глобалами, но не повезло.

Update

Удаление exit не имеет никакого значения. $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 не сохраняет значение, поскольку переменная установлена ​​в другом действии?

второго обновления

Сессия работает, но при попытке передать значение $dbDateTime через следующий вызов AJAX вместо этого. Это код 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); 
}); 

В последней функции щелчка переменные становятся неопределенными. Итак, как это работает в jQuery?

+4

[Выход] (http://php.net/manual/en/function.exit.php) останавливает выполнение от достижения второй 'if'. Я не понимаю, как вы понимаете это как неопределенное ... Если первый 'if' является ложным,' $ dbDateTime' является 'undefined', но если это правда, он не достигнет этой точки ... Теперь , если то, что вы делаете, продолжает отправлять запросы для этого php, вы можете использовать SESSIONs для сохранения значения из '$ dbDateTime', так что в следующий раз вы сможете получить к нему доступ ... – FirstOne

+0

Это звучит разумно. SESSIONS - единственный способ сохранить значение в PHP? Должен ли он быть отключен после использования или автоматически перезаписать его? – MaDaHoPe

+1

Вы делаете два отдельных запроса AJAX? То есть, этот скрипт PHP называется двумя раздельными временами? –

ответ

0

Ваша HTML-страница и ваш PHP-скрипт не обмениваются данными с состоянием.

Каждый раз, когда ваш код AJAX запускается на странице HTML, он вызывает новый вызов скрипта PHP. Каждый раз, когда вызывается PHP-скрипт, переменные начинаются с состояния по умолчанию в соответствии с кодом. Если вы хотите использовать переменную от одного вызова AJAX к следующему, вам придется отправить ее в следующий раз, когда вы вызовете скрипт PHP.

Попробуйте добавить значение, которое вы возвращаете для dbDateTime в качестве параметра для последующих вызовов AJAX, и я думаю, что вы будете на правильном пути.

Update

Ваш AJAX был почти там. Попробуйте удалить var здесь:

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

Спасибо. Я попробую это, как только Xmas закончится с :-) – MaDaHoPe

+0

Просто попробовал добавить ответ ajax как переменную, но он появляется как неопределенный при проверке его на консоли. Я уточню свой ответ с моей грустной попыткой в ​​JS. Извините за спам: -/ – MaDaHoPe

+0

Это не спам; цель сообщества - решить проблемы и записать ответы для дальнейшего использования. Теперь у вас запущена проблема с областью jQuery. Удалите 'var' перед' dbDatetime' внутри обратного вызова. –

Смежные вопросы