1
我使用AJAX請求從數據庫中獲取數值。 AJAX函數位於另一個函數內,該函數應返回AJAX請求的值。但是,因爲AJAX請求的返回值是xmlhttp.onreadystatechange函數內的局部變量,所以它不會更改return_count函數的「更高級別」temp_return。我不能讓「lower」函數返回值並將其賦值給一個變量,因爲它已經定義爲xmlhttp.onreadystatechange ...我怎樣才能改變這個,使得return_count函數將返回正確的值而不是42(預定義的出於測試目的)?從AJAX函數內部修改外部變量?
function return_count(ajax_userid,ajax_date,ajax_KT,ajax_KS)
{
var temp_return = 42;
xmlhttp.onreadystatechange =
function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
temp_return = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "count.php?userid="+ajax_userid+"&date="+ajax_date+"&KT="+ajax_KT+"&KS="+ajax_KS, true);
xmlhttp.send();
return temp_return;
}
做出ajax請求[同步](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests),如果你不想阻塞頁面,你需要調用函數而不是返回。 –
* AJAX中的* A *表示**異步**,您不能從ajax調用返回變量,您需要通過回調函數(通常作爲ajax的參數傳遞)來使用它「major」函數),它將只有一個參數(返回的數據,在本例中爲'xmlhttp.responseText'),並且將使用該參數進行調用。 –
可能重複[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – adeneo