Javascript XHR responseText是空字符串

Javascript XHR responseText是空字符串,javascript,google-app-engine,xmlhttprequest,webapp2,Javascript,Google App Engine,Xmlhttprequest,Webapp2,Html页面: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>xhr</title> </head> <body> <script> var xhr_test = new XMLHttpRequest(); xhr_test.open("GE

Html页面:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>xhr</title>
</head>
<body>
    <script>
        var xhr_test = new XMLHttpRequest();
        xhr_test.open("GET","xhrtest",true);
        xhr_test.send();
        alert(xhr_test.responseText);
    </script>
</body>
</html>
请求处理程序:

class XHRTest(webapp2.RequestHandler):
    def get(self):
        self.response.write('0')
以及

现在,当我点击url
localhost:8080/xhrtest
时,浏览器立即将响应
0
显示为页面内容

点击url
localhost:8080/xhr
,它会间接点击
/xhrtest
,在警报框中弹出一个空字符串(responseText是空字符串),但检查网络选项卡下的chrome响应选项卡,我可以看到请求的响应是
0


那么为什么
xhr\u test.responseText
无法显示相同的响应呢?

发送的调用是异步的(您已将'async'参数设置为true),这意味着您的警报会在请求完成之前立即发生。 您应该向
xhr.onreadystatechange
添加一个事件侦听器,并在其中使用响应

将“true”更改为“false”可以使这个简单的示例正常工作,但在一般情况下不是一个好主意


解释了应该如何使用XMLHttpRequest。

对我来说,问题是我的后端没有使用gzip。
class XHRTest(webapp2.RequestHandler):
    def get(self):
        self.response.write('0')
class XHR(webapp2.RequestHandler):
    def get(self):
        f = open('static/html/xhr.html','r')
        self.response.write(f.read())