XHR responseText是空字符串

时间:2013-10-23 18:11:07

标签: 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("GET","xhrtest",true);
        xhr_test.send();
        alert(xhr_test.responseText);
    </script>
</body>
</html>

main.py文件:

import webapp2
from handlers import cookies,pages
application = webapp2.WSGIApplication([
        ('/xhr',pages.XHR),
        ('/xhrtest', cookies.XHRTest)
        ],
            debug=True)

请求处理程序:

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())

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

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

那么为什么xhr_test.responseText无法显示相同的响应?

1 个答案:

答案 0 :(得分:5)

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

将'true'更改为'false'会使这个简单的例子起作用,但在一般情况下不是一个好主意。

MDN page on Ajax解释了如何使用XMLHttpRequest。