2008-04-23
Ajax,xmlhttp同步与异步的区别
var returnValue = null;
xmlhttp = createXmlHttp();
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
if (xmlhttp.responseText == "true") {
returnValue = "true";
}
else {
returnValue = "false";
}
}
};
xmlhttp.open("Post",url,true); //异步传输
xmlhttp.setRequestHeader("If-Modified-Since","0"); //不缓存Ajax
xmlhttp.send(sendStr);
return returnValue;
如果是同步(false),返回值是true或false,因为执行完send后,开始执行onreadystatechange,程序会等到 onreadystatechange都执行完,取得responseText后才会继续执行下一条语句,所以returnValue一定有值。
如果是异步(true),返回值一定是null,因为程序执行完send后不等xmlhttp的响应,而继续执行下一条语句,所以returnValue还没有来的及变化就已经返回null了。
所有如果想获得xmlhttp返回值必须用同步,异步无法得到返回值。
同步异步使用xmlhttp池时都要注意:取得xmlhttp时只能新建xmlhttp,不能从池中取出已用过的xmlhttp,因为被使用过的xmlhttp的readyState为4,所以同步异步都会send但不执行onreadystatechange。
以上是我在往上查到的资料,对于同步异步的概念还是不甚理解,最后一段什么意思,还请各位赐教
评论
hzl091
2008-04-29
同步是说代码的上一个功能执行完之后才执行下面的代码,而异步则不需要
s79
2008-04-29
不是说建立一个XHR对象,发送请求后立刻就获得返回值,要给他时间,到时候让他自己调用回调函数。这个XHR等待回应的时候我们还可以干别的。这就是异步。
onreadystatechange函数检查到if(xmlhttp.readyState == 4)就执行回调函数即可。
也可设置一个timeout,超过这个时间就取消本次请求并给出相应通知。
这段代码的结构是错误的。
onreadystatechange函数检查到if(xmlhttp.readyState == 4)就执行回调函数即可。
也可设置一个timeout,超过这个时间就取消本次请求并给出相应通知。
这段代码的结构是错误的。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 527 次
- 性别:

- 来自: 大连

- 详细资料
搜索本博客
我的相册
1215177
共 3 张
共 3 张
最新评论
-
基于JDBC的数据库连接池高 ...
有那么多成熟的数据库连接池啊 ...
-- by chen-516888 -
基于JDBC的数据库连接池高 ...
说了这么多,感觉是很不错,但觉得有点空洞, 呵呵,可能是我学的不够好,如果能够举 ...
-- by jiangjinping -
Ajax,xmlhttp同步与异步的 ...
同步是说代码的上一个功能执行完之后才执行下面的代码,而异步则不需要
-- by hzl091 -
Ajax,xmlhttp同步与异步的 ...
不是说建立一个XHR对象,发送请求后立刻就获得返回值,要给他时间,到时候让他自己 ...
-- by s79 -
仿网上银行虚拟键盘脚本- ...
呵呵,请注意题目,仿的哈
-- by xujingbao






评论排行榜