AJAX 同步调用与异步调用的问题
来源:互联网 发布:java 物联网 编辑:程序博客网 时间:2024/06/05 14:59
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>无标题页</title>
<script language="javascript" type="text/javascript">
var xmlHttp;
var domname;
var htmlstr;
var teststr;
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}
function startRequest(){
createXMLHttpRequest();
try{
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET","HTMLPage2.htm",true);
xmlHttp.setRequestHeader("If-Modified-Since","0");
xmlHttp.send(null);
}catch(exception){
alert("您要访问的资源不存在!");
}
}
function handleStateChange(){
if(xmlHttp.readyState == 4){
if (xmlHttp.status == 200 || xmlHttp.status == 0){
//document.getElementById(domname).innerHTML=xmlHttp.responseText;
htmlstr=xmlHttp.responseText;
alert(htmlstr);//这里能获取htmlstr
}
}
}
function list()
{
startRequest()
alert(htmlstr);//这里一直不能获取htmlstr
return htmlstr;
}
</script>
</head>
<body>
<table width="100%" border="0" cellspacing="3" cellpadding="2">
<tr>
<td align="left" valign="top" id="list"></td>
</tr>
</table>
<div id="page"></div>
<script type="text/javascript">list();</script>
</body>
</html>
原因:
因为 xmlHttp.open("GET","HTMLPage2.htm",true); 第三个参数 的作用是async: 一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
也就是说 为 true的时候是异步, htmlstr 还没有赋值,就去执行下面的 语句了。。所以一直打印不出来 htmlstr
把 true 改为 false 就可以解决了。
- AJAX 同步调用与异步调用的问题
- ajax同步异步调用
- 同步调用与异步调用
- 同步调用与异步调用
- 同步调用与异步调用
- 同步调用与异步调用
- Ajax同步调用和异步调用的选择
- javascript异步调用的同步问题
- ICE同步调用与异步调用(1)
- ICE同步调用与异步调用(2)
- ICE同步调用与异步调用(3)
- java---同步调用与异步调用对比
- ExtJs异步ajax调用和同步ajax调用公用方法
- 同步调用、异步调用
- BAPI的同步异步调用
- 委托的异步调用和同步调用
- Silverlight中通过Javascript的XmlHttp调用服务器端内容的同步与异步问题
- 花擦节 dubbo异步调用变同步,解决异步调用返回值null的问题
- VBScript Replace 函数
- document.write("关闭")
- 创建JDBC连接
- CVS的日常使用
- JS操作css的float属性的特殊写法
- AJAX 同步调用与异步调用的问题
- OGRE支持.NET和JAVA调用
- php 判断字符串是中文还是英文
- VBScript InStr 函数
- 【每天一个demo】创建一个Employee 对象
- 基于TCP/IP的多线程通信及其在远程监控系统中的应用
- 如何选择IT技术书籍
- DataGridView中回车键的妙用
- FLEX实践:主应用程序、MODULE、COMPONENT组合