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
无法显示相同的响应?
答案 0 :(得分:5)
对send的调用是异步的(您已将'async'参数设置为true),这意味着您的警报会在请求完成之前立即发生。
您应该向xhr.onreadystatechange
添加一个事件监听器,并使用其中的响应。
将'true'更改为'false'会使这个简单的例子起作用,但在一般情况下不是一个好主意。
MDN page on Ajax解释了如何使用XMLHttpRequest。