我正在使用以下代码显示函数 test2
返回的值。
显示的输出是:x 的值是:undefined
谁能帮我解释一下如何从函数 test2
返回一个值?请注意函数test2
是XMLHTTPRequest
<script language="javascript">
function test1()
{
var x = test2();
alert('Value of x is: '+x);
}
function test2()
{
if(window.XMLHttpRequest)
{
abcd= new XMLHttpRequest();
}
else
{
abcd=new ActiveXObject("Microsoft.XMLHTTP");
}
abcd.onreadystatechange=function()
{
if (abcd.readyState==4 && abcd.status==200)
{
return abcd.responseText; // it is getting value 2 here
}
else if(abcd.readyState < 4)
{
return -1;
}
}
abcd.open("GET",sam.php,true);
abcd.send();
}
</script>
最佳答案
听起来您希望 XML HTTP 请求的值是 test2
的返回值。这是不可能的,因为此 XML HTTP 请求异步执行,而 test2
同步执行。
处理此问题的正确方法是将回调传递给 test2
以在请求完成时执行。回调提供从 XML HTTP 请求返回的值。例如
function test1() {
test2(function (x) {
alert('The value of x is ' + x);
});
}
function test2(callback) {
...
abcd.onreadystatechange=function() {
if (abcd.readyState==4 && abcd.status==200) {
callback(abcd.responseText);
} else {
callback(-1);
}
}
...
}
关于php - 从 Javascript 函数返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018451/