首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMLHttpRequest.readyState

XMLHttpRequest.readyState
EN

Stack Overflow用户
提问于 2013-07-10 02:55:14
回答 1查看 1.1K关注 0票数 1

home.html

代码语言:javascript
复制
front page test

test.php

代码语言:javascript
复制
<SCRIPT language="JavaScript" SRC="ajax.js"></SCRIPT>
<button type="button" onclick="callAJAX('home.html','displaydiv')">Click Me!</button>
<div id="displaydiv"></div>

ajax.js

代码语言:javascript
复制
function callAJAX(url, pageElement, callMessage) {
    document.getElementById(pageElement).innerHTML = callMessage;
    try {
        req = new XMLHttpRequest(); /* e.g. Firefox */
    } catch(e) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
            /* some versions IE */
        } catch (e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
                /* some versions IE */
            } catch (E) {
                req = false;
            }
        }
    }

    req.onreadystatechange = function() {responseAJAX(pageElement);};     
    req.open("GET",url,true);
    req.send(null);

}

function responseAJAX(pageElement) {
    console.log(req.readyState);
    var output = '';
    if (req.readyState == 4) {
        if (req.status == 200) {
             output = req.responseText;
             document.getElementById(pageElement).innerHTML = output;
        }
    }
}

以上代码主要来自这里

问题:

  1. 根据本站,onreadystatechange存储一个函数(或函数的名称),每次readyState属性更改时都会自动调用它,那么readyState属性什么时候会改变呢?req.send(null);
  2. 对于这一行:铬控制台中的console.log(req.readyState);,它显示:1 2 3 4,它没有输出0,这是因为0: request not initialized
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-10 02:58:32

readyState在几个地方发生变化,查看Mozilla的文件以获得更多信息。req.readyState =0表示还没有调用req.open()。

此外,根据您试图使用此代码支持哪些浏览器?,您可以查看使用XHR2中的一些特性,包括一个req.onload()函数,该函数将您的代码更改为:

代码语言:javascript
复制
function callAJAX(url, pageElement, callMessage) {
    var elem = document.getElementById(pageElement);
    elem.innerHTML = callMessage;
    var req = new XMLHttpRequest();
    req.onload = function() {
        elem.innerHTML = req.responseText;
    };     
    req.open("GET",url,true);
    req.send(null);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17561751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档