Sum*_*pta 1 javascript php xmlhttprequest
我使用以下代码来显示函数的返回值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>
Run Code Online (Sandbox Code Playgroud)
听起来您希望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);
}
}
...
}
Run Code Online (Sandbox Code Playgroud)