我有一个函数isOnline(),它看起来像这样:
function isOnline() {
var request=new XMLHttpRequest();
request.onreadystatechange=function() {
if(request.readyState==4) {
if(request.responseText=="online")
return true;
}
}
request.open("GET","onlinecheck.php?user=user",false);
request.send();
return false;
}
如果我运行document.write(isOnline());
进行测试,我总是会弄错,(如果我不写return false;
,则不定义,我未定义。
如何在readyState为4之前“等待”并在此之后返回true?
答案 0 :(得分:1)
你需要关注一些事情:
onreadystatechange
- more here。因此,如果您尝试发送异步请求,请在通话中使用async=true
- 阅读更多here。
request.open("GET", "onlinecheck.php?user=user", true);
最后,如果要使用异步调用,则无法返回值。检查这两个链接
如果您决定同步执行此操作:
function isOnline() {
var request=new XMLHttpRequest();
request.open("GET","www.google.com/",false);
request.send();
/* check the readyState, you can also check for status code */
if (request.readyState === 4)
// put other conditions here if you need to
return true;
else
return false;
}
// It returns true