【问题标题】:node.js + express: `sendfile` to Ajax request giving a 404node.js + express: `sendfile` 到 Ajax 请求给出 404
【发布时间】:2013-04-22 15:58:46
【问题描述】:

这里是节点菜鸟。 :) 我正在使用代码发出 Ajax 请求

var path = "/path/to/file.html";

$.get(path, function(data) {
    $("#post").html(data);
});

在服务器端,响应

app.use(express.directory(__dirname + '/public'));

app.get('/path/*', function(req, res) {
    var is_ajax_request = req.xhr;
    if(is_ajax_request)
        res.sendfile(req.path);
    else
        res.sendfile('public/index.html');
});

实际文件位于public/path/to/file.html。出于某种原因,Ajax 给了我错误

GET http://localhost:3000/path/to/file.html 404 (Not Found)

即使路径肯定是正确的。事实上,如果我删除整个 app.get 函数,它会发现文件没有问题。我应该以其他方式响应 Ajax 请求吗?

【问题讨论】:

  • 我认为你在这里有路径混淆。在执行sendFile 之前,您是否尝试过console.log 路径?这应该很快证实它不仅仅是那么简单。
  • 噢!我必须使用res.sendfile('public/' + req.path),因为在使用sendfile() 时路径必须相对于app.js。让我感到困惑的是,错误消息显示了一条看起来正确的路径。谢谢。
  • 添加在下面,以便您可以为后代“标记为已回答”:)

标签: jquery ajax node.js express


【解决方案1】:

我认为您在这里有路径混淆。

在执行sendFile 之前,您是否尝试过console.log 路径?这应该很快证实它不只是那么简单。

看来您需要使用res.sendfile('public/' + req.path)

【讨论】:

    【解决方案2】:

    试试这个:

     res.sendfile(__dirname + '/public/index.html');
    

    您也可以参考Render raw HTMLRender basic HTML view?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-05
      • 2017-09-06
      • 2018-11-04
      • 1970-01-01
      • 2013-09-28
      • 2013-03-10
      • 2017-06-16
      • 2013-02-15
      相关资源
      最近更新 更多