0

我想发出一个 JS Ajax 请求,但它不起作用。我写了这段代码:

var i=0;
function send()
{
    var request = new XMLHttpRequest();
    request.open("GET", 'support.html', true);
    request.send(null);
    request.onreadystatechange = interpretRequest;
    i++;
    document.getElementById("debug").innerHTML=document.getElementById("debug").innerHTML+i;


}

function interpretRequest() {
    document.getElementById("answer").innerHTML=document.getElementById("answer").innerHTML+"answer received";
    document.getElementById("answer").innerHTML=document.getElementById("answer").innerHTML+request.status;
    document.getElementById("answer").innerHTML=document.getElementById("answer").innerHTML+request.readyState;
    switch (request.readyState) {
        // if readyState == 4 and status == 200 
        case 4:
            document.getElementById("Antwort").innerHTML=document.getElementById("Antwort").innerHTML+" answer received and state 4";

            if (request.status != 200) {
                alert("Error"+request.status);
            } else {

                var content = request.responseText;
                // write content
                document.getElementById("content").innerHTML = content;
            }
            break;
        default:
            break;
    }
}

函数 send 由间隔调用,每个 s 我看到这是有效的,因为 nummers 出现在调试 div 中。函数解释请求也被调用。出现字符串“已收到答案”,但没有包含 request.status 的打印输出。此外,从不输入案例 4,并且内容 div 保持为空。

HTML 文件是:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test</title>

<script type="text/javascript" src="code.js"></script>
</head>
<body>
<div id="debug">Debug:</div>
<br /><hr />
<div id="content">HTML:</div>
<br /><hr />
<div id="answer">answer:</div>
</body>
</html>

support.html 位于同一文件夹中,其中包含:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h3>It works It works It works It works It workIt works</h3>
</body>
</html>
4

1 回答 1

0

request不是全局的,所以你不能从interpretRequest函数中访问它。

改为使用this

于 2013-06-09T12:31:00.017 回答