AJAX:列出目录的内容。无法解析网址

时间:2018-06-13 03:59:12

标签: javascript jquery html node.js ajax

我试图在div中显示文件夹中包含的一些图像。我使用AJAX在名为edit的JavaScript文件中执行此操作,该文件是远离索引路由的一个目录。我使用的是Node.js.我写的代码如下。

var folder = "../images/emojies/";
$.ajax({
    url : folder,
    success: function (data) {
        $(data).find("a").attr("href", function (i, val) {
            // some code
        });
    }
});

我收到此错误: " GET / images / emojies / 404"

奇怪的是,当我这样做时: " /images/emojies/image.png",它找到没有错误的目录! 它可以找不到文件夹,但它可以找到文件吗?

如果需要,

路由代码:

  /* GET home page. */
  router.get('/', function(req, res, next) {
    res.render('index', { title: 'xx' });
  });

  /* GET edit page. */
  router.get('/edit', function(req, res, next) {
    res.render('edit', { title: 'xx' });
  });

3 个答案:

答案 0 :(得分:1)

你可以做类似的事情。

var app = require('express')();
var http = require('http').Server(app);
var fs = require('fs');

var clients = 0;

app.get('/images/emojies', function(req, res) {
    var path = "public/images/emojies/"; //Could be obtained from req.path however, needs to resolve the path properly.
    fs.readdir(path, function(err, items) {
        res.send(items); // items is an array
    });
});

http.listen(3000, function() {
   console.log('listening on *:3000');
});

/images/emojies将是您要联系的端点,您可以使用现有的AJAX请求,如下所示。

var folder = "/images/emojies";
$.ajax({
    url : folder,
    success: function (data) {
        //Under data, you have a stringified array of the file names.
    }
});

这种方法最好的一点是,它可以让您对要公开的文件类型和文件名进行更细粒度的控制,特别是考虑到您要公开文件系统的一部分。

答案 1 :(得分:0)

您可以使用路径模块来解决问题:

https://nodejs.org/api/path.html

我认为它应该是这样的:

var folder = path.normalize("../images/emojies/");

答案 2 :(得分:0)

在Nodejs中,当您访问文件夹时,您必须使用./ sign编写文件夹根目录。 例如



    var folder = "./../images/emojies/";//Firstly you have to write "./" it access to the same folder where your file is then go up another folder
    $.ajax({
        url : folder,
        success: function (data) {
            $(data).find("a").attr("href", function (i, val) {
                // some code
            });
        }
    });