首页 文章

ajax请求在没有服务器的情况下使用firefox成功加载带有快速服务器(chrome)的404?

提问于
浏览
0

我正在尝试从索引视图发出ajax请求 . .

├── app.js
|
├── package.json
├── ajax
│   ├──ajax.txt
|   
├── home.ejs
  • server只是呈现主页
app.set('views' , './');
    app.set('view engine' , 'ejs');
    app.get('/' , function(req , res){
        res.render('01');
    });

-ajax脚本在没有服务器的Firefox中加载很好 . - 制作快递服务器,它给404

GET http://localhost:3000/ajax/ajax.txt 404 (Not Found)

单击按钮时

  • home简单发出请求 .
var loadAjax = document.getElementsByTagName('button')[0];
    loadAjax.addEventListener('click' , function(e){
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function(){
            if((xhr.readyState == 4) && (xhr.status == 200 || xhr.status == 304)){
                var rText = document.createTextNode(xhr.responseText);
                var p = document.createElement('p');
                p.appendChild(rText);
                document.body.appendChild(p);
            }
        };
        xhr.open('GET' , 'ajax/ajax.txt' , true);  
        xhr.send(null);

1 回答

  • 0

    从您显示的Express代码中,没有响应 http://localhost:3000/ajax/ajax.txt 请求的路由处理程序 .

    默认情况下,快速Web服务器不提供任何文件 . 因此,它只提供您为其创建显式路由处理程序的文件,或者您已配置某种中间件以自动方式提供一个或多个静态文件 . 因此,与其他一些Web服务器不同,Express不仅会在您的服务器文件系统中查找匹配文件以发送回请求客户端 . 如果没有明确设计用于处理该特定请求的路由或中间件,则会获得404 .

    您可以使用 app.use(express.static(...)) 为Express配置一些静态文件处理 . 例如,您可以将其配置为自动提供静态和公共文件的整个目录 . 例如,这通常用于提供通常为静态文件的.css和.js文件 .

    例如,只处理 /ajax/ajax.txt 请求的简单Express路由如下所示:

    app.get("/ajax/ajax.txt", function(req, res) {
        res.sendFile("ajax/ajax.txt");
    });
    

    根据您对静态文件的其他操作,您还可以使用 express.static() 中间件来配置一个或多个静态文件,以便由Express服务器自动提供 . 有关各种选项和使用方法,请参阅the doc .

相关问题