Ajax 的onreadystatechange事件注意事项.

<script type="text/javascript">   
   function createXHR()
        {
            var request = false;
            try {
                request = new XMLHttpRequest();//最重要的对象.
            } catch (trymicrosoft) {
                try {
                    request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (othermicrosoft) {
                    try {
                        request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (failed) {
                        request = false;
                    }
                }
            }

            if (!request)
                alert("Error initializing XMLHttpRequest!");
        }
        function AjaxTest()
        {
            var xhr = createXHR();
            xhr.onreadystatechange = function () {
                if (xhr.readystate == 4) {
                    if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
                        alert(xhr.responseText);
                    }
                    else {
                        alert("Request was unsuccessful:" + xhr.status);
                    }
                }
            };
            //必须在调用open()之前指定onreadystatechange事件处理程序,才能确保跨浏览器兼容性.
            xhr.open("get", "test.txt", true);
            xhr.send(null);
            //注意:事件处理程序中使用了xhr对象,没有使用this对象,原因是onreadystatechange事件处理程序的作用域问题.
            //如果使用this对象,在有的浏览器中会导致函数执行失败,或者导致异常.因此使用实际的xhr对象实例变量比较靠谱.
        }
         
    </script>

 

posted @ 2017-08-30 09:42  longdb  阅读(2007)  评论(0编辑  收藏  举报