技术解析

请问 为什么我获取的 responseText 值是空的啊
0
2021-08-23 19:59:51
idczone
sendAjax( ){
var xhr = new XMLHttpRequest();
xhr.responseType = "text";
xhr.open('GET', 'example.txt', true);
alert(xhr.responseText);
xhr.send(null);
}

example.txt 和 html 页面是同一个域的
。。。。。。。。。。。。
xhr 是异步
https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

/>而且他连 send 都没 send 就开始读返回值了...

用 fetch...then 吧,比较容易理解


我是按书上的例子
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 萌新 见谅

给个栗子自己研究吧...
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()


好像是我把文件放本地的原因 用 http 协议 就可以了 。。
XMLHttpRequest 用于同 HTTP 和 HTTPS 协议一起工作。
理论上,它能够同 FTP 这样的其他协议一起工作,但比如请求方法和响应状态码等部分 API 是 HTTP 特有的。
如果从本地文件中加载网页,那么该网页中的脚本将无法通过相对 URL 使用 XMLHttpRequest,因为这些 URL 将相对于 file://URL 而不是 http://URL。而同源策略通常会阻止使用绝对 http://URL。
结果是当使用 XMLHttpRequest 时,为了测试它们通常必须把文件上传到 Web 服务器或者运行一个本地服务器。

这是传说中的老式 Ajax?

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服