Я пытаюсь получить функцию Ajax для возврата true или false (это своего рода функция проверки, которая вызывается из другой функции). Таким образом, другая функция должна получить истинное или ложное значение от этого, чтобы он знал, что делать дальше.Получить функцию Ajax для возврата true или false
Я уверен, что я сделал это раньше, но теперь я не могу заставить его работать. Я пробовал синхронные и асинхронные вызовы, имея возврат внутри функции onreadystatechange и под ним, и ничего.
Это Ajax:
function saveBooking(){
var service_ids=document.getElementById("allservice_ids").value;
var provider_ids=document.getElementById("allprovider_ids").value;
var chosen_time=document.getElementById("chosen_time").value;
var chosen_date=document.getElementById("chosen_date").value;
var message=document.getElementById("message").value;
var parameters="service_ids="+service_ids+"&provider_ids="+provider_ids+"&time="+chosen_time+"&date="+chosen_date+"&you=<?php echo $_SESSION['user_mail']; ?>&message="+message
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST","include/save_booking.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
xmlhttp.onreadystatechange = function() {//Call a function when the state changes.
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var yesorno=xmlhttp.responseText;
if(yesorno=="ok"){
return true;
}
else{
document.getElementById("booking_error").innerHTML = xmlhttp.responseText;
return false;
}
}
}
xmlhttp.send(parameters);
}
Сейчас save_booking.php содержит только линию <?php echo "ok"; ?>
, я уменьшил его в том, что для целей тестирования.
Может кто-нибудь сказать мне, как заставить это работать? В другой функции, если я это сделаю:
if(saveBooking()){
alert(saveBooking());
}
Он просто предупреждает слово «неопределенный».
Обратите внимание, что я не очень хорошо знаком с jQuery, поэтому «использование jQuery» не является полезным ответом для меня.
Несмотря на это, используйте jQuery. Если вы можете понять этот гигантский кусок кода, jquery займет у вас около 7 минут, чтобы понять его полностью. Не пытайтесь быть мудрым парнем, но jquery устранит МНОГО вашего письменного кода, а также путаницу и ошибки. – Dutchie432
Откройте Firebug, перейдите на вкладку NET и посмотрите свой HTTP-ответ. –
вместо возврата true .. попробуйте переменную и предупредите, если еще что-то другое. Просто для тестирования – zod