专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Ajax

ajax运作流程困惑

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
ajax运行流程困惑
<html>
<head>
<script type="text/javascript">
function showCustomer(str)
{
var xmlhttp;    
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","/ajax/getcustomer.asp?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

<form action="" style="margin-top:15px;"> 
<label>请选择一位客户:
<select name="customers" onchange="showCustomer(this.value)" style="font-family:Verdana, Arial, Helvetica, sans-serif;">
<option value="APPLE">Apple Computer, Inc.</option>
<option value="BAIDU ">BAIDU, Inc</option>
<option value="Canon">Canon USA, Inc.</option>
<option value="Google">Google, Inc.</option>
<option value="Nokia">Nokia Corporation</option>
<option value="SONY">Sony Corporation of America</option>
</select>
</label>
</form>
<br />
<div id="txtHint">客户信息将在此处列出 ...</div>

</body>
</html>


小弟最近在w3school学习Ajax,遇到程序流程运行困惑。我理解的程序运行流程如下:
当客户端onchange下拉框事件被触发后,转向showCustomer函数处运行,XMLHttpRequest对象xmlhttp被建立,onreadystatechange,但由于未满足条件(xmlhttp的readyState为4并且xmlhttp的status为200),跳过if条件句,xmlhttp的open用GET准备好请求数据,然后xmlhttp的send方法发送数据到服务器,然后ajax模块就等待,readyState的值依次从服务器获取状态而改变,按照顺序从0到4,当且仅当xmlhttp的readyState为4并且xmlhttp的status为200,表示服务器响应就绪,进入if条件句下面运行语句,操作html的DIV并显示从服务器得到的内容。
我想问的是,当readyState的状态值从0到4的过程中,是不是每次都会运行send和open方法?我认为在onreadystatechange代码后面。当且仅当xmlhttp的readyState为4并且xmlhttp的status为200,onreadystatechange代码后面send和open方法是不是还要运行一次?如果运行,是不是没必要了?
麻烦各位了,先谢谢了。
------解决思路----------------------
send和open 只运行一次,就是调用 showCustomer 的时候。
showCustomer 里只是设置 onreadystatechange 事件的处理函数,
onreadystatechange 设置的事件回调函数 在运行时和 showCustomer 已经没关系了。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: