Javascript XHR responseText是空字符串
Html页面: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
<!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')
以及
现在,当我点击urllocalhost:8080/xhrtest
时,浏览器立即将响应0
显示为页面内容
点击urllocalhost: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())