我試圖讓Ajax函數返回true或false(這是一種從另一個函數調用的驗證函數)。所以另一個函數需要從這個函數中得到一個真實或者錯誤的值,所以它會知道下一步該怎麼做。獲取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());
}
它只是提醒單詞'undefined'。
請注意,我不太熟悉jQuery,所以'使用jQuery'對我來說不是一個有用的迴應。
即便如此,請使用jQuery。如果你能理解這個巨大的代碼塊,jquery將花費大約7分鐘的時間來充分理解。不要試圖成爲一個聰明人,但jQuery會消除你手寫代碼的很多,以及混淆和錯誤 – Dutchie432 2012-04-24 15:55:53
打開Firebug,單擊NET選項卡,並觀看您的HTTP響應。 – 2012-04-24 15:57:31
而不是返回true ..嘗試一些變量,並警告如果其他本身..只是爲了測試 – zod 2012-04-24 16:02:13