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 已经没关系了。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
AJAX跨域问题解决方法(4)——调用方解决跨域
调用方解决跨域的方法只有一种,那就是隐藏跨域。 何为隐藏跨域? 隐藏跨域的核心...
-
jsp页面返回xml格式数据 ajax读取不到
初学ajax , 用 jsp 写一个用户登录的验证处理, ajax请求的页面返回的是xml格式的数据
...
-
ajax返回数据之前的loading等待
首先,我们通过ajax请求,向后台传递参数,然后后台经过一系列的运算之后向前台返还数据,我希望在等待数...
-
ajax运行流程困惑
<html>
<head>
<script type="text/javascript">
function showCustomer(str)
{
var xmlhttp;
if (s...
-
关于ajax一些基础的东西。
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", url, true);
...
-
ajax向springmvc传递对象参数
我们在使用前端的ajax技术过程中,有的时候简简单单的向后台的springmvn传递参数,直接使用如下...
-
Firefox AJAX请求readyState = 0,status = 0问题
今天在测试的时候,狂刷页面AJAX请求就会出错,Chrome浏览器没问题,Firefox就报错!
...
-
jquery的success不执行,只执行error,求大虾帮忙看下,感激不尽
本帖最后由 showbo 于 2015-05-28 11:49:05 编辑
...
-
jqury中关于ajax的几个常用的函数
一:
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
什么是 AJAX ?
AJAX =...
-
Ajax的get请求向服务器请求数据五步骤?
如下:
①创建ajax对象
②建立http请求
③发送http请求
④设置ajax对象状态改变的回调函数
...