请问 为什么我获取的 responseText 值是空的啊

2019-11-18 01:30:35 +08:00
 suisetai
sendAjax( ){
var xhr = new XMLHttpRequest();
xhr.responseType = "text";
xhr.open('GET', 'example.txt', true);
alert(xhr.responseText);
xhr.send(null);
}

example.txt 和 html 页面是同一个域的
4135 次点击
所在节点    JavaScript
7 条回复
lianyue
2019-11-18 01:46:00 +08:00
morethansean
2019-11-18 01:55:32 +08:00
@lianyue #1
而且他连 send 都没 send 就开始读返回值了...
lihongming
2019-11-18 01:57:24 +08:00
用 fetch...then 吧,比较容易理解
suisetai
2019-11-18 02:13:50 +08:00
@lianyue
我是按书上的例子
function getNewContent(){
var request=getHTTPObject();
if(request){
request.open("GET",'example.txt', true );
request.onreadystatechange=function(){
if(request.readyState == 4){
alert('Response Received');
var para = document.createElement('p');
var txt = document.createTextNode(request.responseText);
para.appendChild(txt);
document.getElementById('new').appendChild(para);
}
};
request.send(null);
}
else{
alert('Sorry, your browser doesn\'t support XMLHttpRequest ');
}
alert('Function Done');
}
能正常弹出 Function Done 和 Response Received
但是 responseText 的值总是 null。。。。
js 萌新 见谅
rabbbit
2019-11-18 02:20:21 +08:00
给个栗子自己研究吧...
var xml = new XMLHttpRequest()
xml.open('GET', 'https://jsonplaceholder.typicode.com/todos/1')
xml.onreadystatechange = function () {
if (xml.readyState === 4) console.log(xml.responseText)
}
xml.send()
suisetai
2019-11-18 02:41:26 +08:00
@rabbbit
好像是我把文件放本地的原因 用 http 协议 就可以了 。。
XMLHttpRequest 用于同 HTTP 和 HTTPS 协议一起工作。
理论上,它能够同 FTP 这样的其他协议一起工作,但比如请求方法和响应状态码等部分 API 是 HTTP 特有的。
如果从本地文件中加载网页,那么该网页中的脚本将无法通过相对 URL 使用 XMLHttpRequest,因为这些 URL 将相对于 file://URL 而不是 http://URL。而同源策略通常会阻止使用绝对 http://URL。
结果是当使用 XMLHttpRequest 时,为了测试它们通常必须把文件上传到 Web 服务器或者运行一个本地服务器。
sunziren
2019-11-18 08:45:22 +08:00
这是传说中的老式 Ajax?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/620491

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX