[英]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.