我正在尝试从索引视图发出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 回答
从您显示的Express代码中,没有响应
http://localhost:3000/ajax/ajax.txt
请求的路由处理程序 .默认情况下,快速Web服务器不提供任何文件 . 因此,它只提供您为其创建显式路由处理程序的文件,或者您已配置某种中间件以自动方式提供一个或多个静态文件 . 因此,与其他一些Web服务器不同,Express不仅会在您的服务器文件系统中查找匹配文件以发送回请求客户端 . 如果没有明确设计用于处理该特定请求的路由或中间件,则会获得404 .
您可以使用
app.use(express.static(...))
为Express配置一些静态文件处理 . 例如,您可以将其配置为自动提供静态和公共文件的整个目录 . 例如,这通常用于提供通常为静态文件的.css和.js文件 .例如,只处理
/ajax/ajax.txt
请求的简单Express路由如下所示:根据您对静态文件的其他操作,您还可以使用
express.static()
中间件来配置一个或多个静态文件,以便由Express服务器自动提供 . 有关各种选项和使用方法,请参阅the doc .