Ajax的异步性

      ajax的异同步性有open()最后一个参数决定,true代表异步,false代表同步。换句话说同步是客户机请求服务器响应,感觉让人比较慢(缺乏交互性),如果是处理大量的服务器处理,那么等待的时间可能很长。异步请求代表不用等待服务器响应,应用程序继续运行,这样响应迅速,交互性强,感觉就快多了。服务器完成了请求,onreadystatechange就要起作用了,该属性允许指定的回调函数

     例子:

           function showCustomer(str) {

                      var xmlhttp;

                      if (str=="") {

                       document.getElementById("txtHint").innerHTML="";

                        return;

                      }

                     if (window.XMLHttpRequest) {

                     xmlhttp=new XMLHttpRequest();

                     } 

                    else {

                           xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

                          }

                   xmlhttp.onreadystatechange=function() {

                  if (xmlhttp.readyState==4 && xmlhttp.status==200) {

                            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;

                       }

                 }

                xmlhttp.open("GET","getcustomer.asp?q="+str,true);

                xmlhttp.send();

          }

代码分析:假如没有xmlhttp.readyState==4会出现什么效果呢?在表单停止弹出之前会出现警告。所以这是请求/响应循环中的一个重要部分

在ajax中的五种就绪状态:

        0:请求没有发出(open()调用之前)

        1:请求已经建立但还没有发出(send()之前)

        2:请求已经发出正在处理之中(通常可以从响应得到内容头部)

        3:请求已经处理,响应中通常有部分数据可用,但是服务器没有完成响应

        4:响应结束,可以访问服务器响应并使用它

xmlhttp.status:代表状态码

          http://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81

如果就绪状态是4而且状态码是200,我们就可以处理服务器的数据了

posted @ 2011-05-22 20:38  jesse-win  阅读(300)  评论(0)    收藏  举报