我试图让 Ajax 函数返回 true 或 false(它是一种从另一个函数调用的验证函数)。所以另一个函数需要从这个函数中获取一个真值或假值,这样它才能知道下一步该做什么。
我确定我以前做过这个,但我现在不能让它工作。我尝试了同步和异步调用,在 onreadystatechange 函数内部及其下方有返回,但什么也没有。
这是阿贾克斯:
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”对我来说不是一个有用的回答。