簡體   English   中英

獲取目錄json中的所有文件

[英]Get all files in directory json

我想在目錄中獲取所有文件json以進行搜索。

  $('#get-data').click(function () {
    var showData = $('#show-data');

    $.getJSON('/data/**all files json**', function (data) {
      console.log(data);

      var items = data.items.map(function (item) {
        return item.key + ': ' + item.value;
      });

      showData.empty();

      if (items.length) {
        var content = '<li>' + items.join('</li><li>') + '</li>';
        var list = $('<ul />').html(content);
        showData.append(list);
      }
    });

    showData.html(data);
  });

您認為有可能還是我需要使用其他方法?

謝謝

您無法發出將返回服務器上所有可能的JSON文件的通配符AJAX請求。 您需要事先知道要將請求發送到的確切端點。 否則,如果所有客戶端都可以事先知道服務器上有哪些文件可用,則將是一個安全漏洞。

因此,這里一種可能的策略是在服務器上具有一些/describe端點,該端點將返回所有可用JSON文件的列表。 然后,客戶端將首先向該端點發出AJAX請求,然后對於列表中返回的每個端點,它將發出單獨的AJAX請求:

$.getJSON('/data/discover', function (data) {
    // suppose that data looks like this:
    // ["/data/a.json", "/data/b.json", "/data/c.json"]
    for (var i := 0; i < data.length; i++) {
        // send an AJAX request to each individual JSON file
        // available on the server as returned by the discover endpoint
        $.getJSON(data[i], function (result) {
            ...
        });
    }
});

基本上,您無法通過一個請求來請求多個文件。

但是,該方案非常適合async.parallel

var async = require('async');
app.get('/json', function(req, res) {
  var work = {
    file01: async.apply(fs.readFile, __dirname + '/file01.json'),
    file02: async.apply(fs.readFile, __dirname + '/file02.json')
  };
  async.parallel(work, function (error, results) {
    if (error) {
      res.status(500).send(error);
      return;
    }
    //might need string->Object here
    results['file01'] = JSON.parse(results['file01']);
    results['file02'] = JSON.parse(results['file02']);
    res.send(results);
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM