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