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

新手上路,请多包涵

使用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获得的结果依旧是原来未修改的文本,这是为什么

阅读 803
avatarAI BotBETA

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

关于你看到的错误,这是因为你在注释中包含了一个图片链接 /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();

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

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

1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题