На прошлой неделе я начал играть с javascripts, поэтому мои знания ... очень ограничены. Пожалуйста, будьте терпеливы со мной: -)
Я пишу простую систему бронирования, которая хранит в MySql даты и идентификаторы пользователей. Он проверяет, забронирован ли данный день (если да, то isTicket.php возвращает UserId, если он все еще свободен, чем 0).
Поскольку можно выбрать диапазон дней, и я не хотел бы отправлять несколько предупреждений, я установил для переменной otherEventFound значение false, если в любой из выбранных дней другой пользователь уже забронирован.
Как показано ниже, я попытался использовать эту переменную "вне" пост-функции, и есть две возможности:
1) Если мой скрипт содержит строку >> alert ("otherEventFound ... << работает. </p>
2) Если я уберу эту строку, она не будет.
Я немного дезориентирован. Может кто-нибудь объяснить, почему эта дополнительная строка предупреждения так важна, и в более общем смысле возможно ли перезаписать переменные в родительской функции из функции post.success?
Если это чистая удача, чем работа со строкой оповещения, как правильно это сделать в javascript?
parent function
...
var otherEventFound = new Boolean();
var do_the_booking = new Boolean();
otherEventFound = false;
do_the_booking = false;
for ( var i = myStart.getDfJ(); i <= myEnd.getDfJ(); i++)
{
// conver i to MySQL format yyyy-mm-dd
var milliseconds = 1000 * 60 * 60 * 24 *i;
var j = new Date(milliseconds);
var strID = j.toYMD();
// and ask server if there is other event on this day
$.post("isTicket.php", { theDay: strID },
function(answ){
if ( parseInt(answ) == 0 ){
do_the_booking = true;
}
else {
if ( !(parseInt(answ) == currentUserId) ){
otherEventFound = true;
}
}
}
);
}
alert ("otherEventFound " + otherEventFound + " do_the_booking " + do_the_booking);
if (otherEventFound==true) {
alert ("There is not yours event booked on this day.");
do_the_booking=false;
};
if (do_the_booking==true){
var x=window.confirm("Do you want to book on this/these day/s?")
if (x) {
// ... do something like $.post("setTicket.php" ...
}
}