AJAX: перечисление содержимого каталога.Невозможно разрешить URL - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь отобразить некоторые изображения, содержащиеся в папке, внутри div.Я использую AJAX для этого в файле JavaScript с именем edit, который находится на расстоянии одного каталога от маршрута индекса.Я использую 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 голосов
/ 13 июня 2018

В Nodejs при доступе к папке вы должны написать корень папки со знаком ./.Например

    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
            });
        }
    });
0 голосов
/ 13 июня 2018

Вы могли бы сделать что-то вроде следующего.

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.
    }
});

Лучшее в этом методе состоит в том, что он дает вам более детальный контроль над типами файлов и именами файлов, которые вы собираетесь предоставлять, особенно если учесть, что вы собираетесь предоставлять часть своей файловой системы.

0 голосов
/ 13 июня 2018

Вы можете использовать модуль пути для решения вашей проблемы:

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

Я думаю, что это должно выглядеть так:

var folder = path.normalize("../images/emojies/");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...