当前位置: 首页 > 知识库问答 >
问题:

javascript - 使用AJAX从node.js本地服务器请求文本 运行一直报错?

呼延光明
2024-02-06

使用AJAX从服务器请求文件,运行报错

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title></head><body>    <p id="d1"></p>        <script>        // const myobj={name:"Bill",age:21,city:"Guangzhou"};        // const myJSON=JSON.stringify(myobj);        // window.location="/demo_json.php?x="+myJSON;        // 来自服务器的 JSON 可以使用 AJAX 请求从服务器请求 JSON        const xhttp=new XMLHttpRequest();        xhttp.onreadystatechange=function(){            if(this.readyState==4&&this.status==200){            const myobj=JSON.parse(this.responseText);            document.getElementById("d1").innerHTML=myobj.name            }                   }        xhttp.open("GET","json.txt");        xhttp.send();    </script>   </body></html>

第一次运行时忘记把上面三条代码注释掉,就直接运行,结果浏览器报错

第二次注释了上面的代码,保存之后,重启了node.js本地服务器,再运行几遍,依旧显示之前的错误。为什么会一直运行已经注释了的代码请求?
还有修改了服务器的json文本,运行AJAX请求,responseText获得的结果依旧是原来未修改的文本,这是为什么

共有2个答案

叶煌
2024-02-06

大概率是 get 被缓存了。可以尝试加个时间戳入参,这样就不会被缓存了。或者开着控制台 disable cache 禁用缓存

周浩淼
2024-02-06

你的代码中,当你在第一次运行时,注释掉的代码实际上没有被执行,因为你已经把它们注释掉了。这就是为什么你看到一个错误消息,因为你的代码试图解析一个不存在的变量。

关于你看到的错误,这是因为你在注释中包含了一个图片链接 /img/bVdbn3x,这是无效的。这可能是导致错误的原因。

然后,你说你注释了这些代码,保存了文件,重启了服务器,但仍然看到了同样的错误。这可能是因为浏览器缓存了你的页面或脚本。当你修改并保存了你的HTML文件后,你需要清除浏览器缓存或者强制刷新页面(通常是按Ctrl + F5)以确保你正在运行的是最新的代码。

至于为什么修改了服务器的json文本后,运行AJAX请求,responseText获得的结果依旧是原来未修改的文本,这可能是因为浏览器缓存了AJAX请求的响应。你可以在AJAX请求中添加一个cache: false选项来禁用浏览器缓存:

xhttp.open("GET","json.txt", true, "username", "password");xhttp.setRequestHeader("If-None-Match", "");xhttp.setRequestHeader("If-Modified-Since", "");xhttp.setRequestHeader("Cache-Control", "no-cache");xhttp.send();

上述代码将确保每次请求都会向服务器发送最新的数据请求,而不是从浏览器缓存中获取数据。

另外,确保你在服务器端正确地处理了文件请求。如果服务器没有正确地处理请求或返回了错误,那么这也可能是导致你看到错误的原因。

 类似资料:
  • 代码\“ 错误 CORS策略阻止了从origin“http://127.0.0.1:3000”\访问“https://github.com/somelink/data.json”得XMLHttpRequest:请求得资源上没有“access-control-allow-origin”标头. 我查过很多资源。 这一个 秒

  • 名为charles的工具中有一个功能,允许您映射远程请求: http://www.charlesproxy.com/documentation/tools/map-remote/ 基本上,它可以将任何请求发送到服务器(即使不是运行它的人),然后向另一台服务器发出新请求,保留路径和查询字符串。然后,来自第二台服务器的响应将覆盖来自第一台服务器的响应。 我只是想知道是否有一个节点模块可以做到这一点。我

  • 问题内容: 是否可以从本地html / js文件(例如file://home/a.html)向远程服务器(例如http:// domain:8080 / api )进行AJAX调用(例如,使用jQuery.ajax()))?如果是,如何启用这种XSS(例如在FF3中)? 我想这是某些浏览器的安全设置,但是找不到哪个。 并假设有一个没有任何服务器端更改(例如JSONP)的答案。 谢谢。 程式码片段:

  • 本文向大家介绍详解Node.js一行命令上传本地文件到服务器,包括了详解Node.js一行命令上传本地文件到服务器的使用技巧和注意事项,需要的朋友参考一下 现在存在的问题 每次打包完, 都要打开 FileZilla 一顿拖拽然后才能上传代码, 那就立马撸一个自动化脚本就完事了 publish-sftp Github 传送门(顺便来骗个Star) 以后一行命令上传本地文件到服务器啦 安全性 项目组已

  • 问题内容: 刚开始在本地服务器上试用Flask时,我注意到请求/响应时间比我预期的要慢得多。 像下面这样的简单服务器需要近5秒钟才能响应。 有任何想法吗?还是这只是本地服务器的方式? 问题答案: 在支持ipv6并进行了配置的操作系统(例如现代Linux系统,OS X 10.4或更高版本以及Windows Vista)上,如果访问本地服务器,某些浏览器可能会非常缓慢。原因是有时ipv4和ipv6套接

  • 问题内容: 我正在调试一些必须在我的虚拟机上运行的python脚本。而且,我更喜欢在本地(虚拟机外部)编辑脚本。因此,我发现每次都将脚本修改为虚拟机 很繁琐。谁能提出一些有效的方法? 特别是,我想知道是否可以在远程PVM上执行python脚本。像这样: 问题答案: 可以使用ssh。Python接受连字符(-)作为执行标准输入的参数, 运行 python –help 以获得更多信息。