如果文件存在于目录中,则加载JSON数据。

时间:2014-12-30 20:22:53

标签: javascript jquery html json

我会尽力解释这个问题,但它无疑会让人感到困惑,我一直在寻找大约3天没有运气,所以它要么不可能,要么那么简单以至于没有一个人需要问。

基本上,我在我的网络服务器的根目录中有一个文件夹,其中包含不断变化的图像数量,我想要做的是用jquery扫描该文件夹并将图像加载到html页面,我已经完成了,它运作完美,但我需要它做更多,

我有一个看起来像这样的json文件......

[{
    "gamename": "GAME1",
    "gameimage": "GAME1.jpg",
    "orientation": "horizontal"
},
{
    "gamename": "GAME2",
    "gameimage": "GAME2.jpg",
    "orientation": "horizontal"
},

我需要它做的是搜索图像文件夹中的图像,如果找到图像,将其加载到html页面(我现在可以做),然后找到该游戏的相应json数据图像并将其显示在加载的图像下方。

这是我当前正在扫描文件夹并加载jpg图像的代码。

<html>
<head>
    <script type="text/javascript" src="resources/jquery-1.9.1.min.js"></script>
</head>
<body>
<div class="l-content">
    <div class="cell pure-g">
    </div>
</div>
<script>
var dir = "/images/";
var fileextension = ".jpg";
$.ajax({
    url: dir,
    success: function (data) {
        $(data).find("a:contains(.jpg)").each(function () {
            var filename = this.href.replace(window.location.host, "").replace("http:///", "");
            $(".pure-g").append($("<img class=\"game-img\" src=" + dir + filename + "></img><br>"
            ));
        });
    }
});
</script>
</body>
</html>

非常感谢任何帮助,我知道这可能不是最容易理解的问题所以如果需要,我会尝试清除任何问题。

1 个答案:

答案 0 :(得分:2)

Javascript是&#34;客户端&#34;语言,因此它不会(直接)访问您的网络服务器的文件系统。因此,我认为您最好的方法是在您的网络服务器(php,.net,节点或您知道的任何内容)上安装一个脚本,该脚本提供一个json文件,列出您的javascript目录中的所有图像。

在网络服务器上,您有一个执行以下操作的脚本(要遵循的伪代码,因为我不知道哪种语言最有用):

var returnJson = {};
var dir = "/images/";
while (var file = getNextFileIn(dir)) {
    returnJson.push(file);
}

print(json_encode(returnJson));

您想要进行一些验证,它是您要求的,或者任何人都可以看到该目录的内容......但是您的jquery可以对上面的脚本发出ajax请求,并知道什么& #39;在那里。

这听起来像你倾向于PHP,所以你可以让你的webserver文件结构如下:

/www/index.html <- has your current jquery
/www/public/[all your images go here]
/www/public.php <- the php script below

然后public.php可能如下所示:

$returnJson = array();
$files = scandir('public/'); // You might want this to be an absolute path, if you are playing games with your include path for security reasons

foreach ($files as $file) {
    if (substr($file, 0, 1) == '.') continue; // This skips over invisible files and the current directory and up one directory
    $returnJson[] = $file;
}

echo(json_encode($returnJson)); // This prints out all the files...

然后在你的JQuery中,你可以解析响应,迭代它并制作网址:http://yourserver.com/public/ {entry in $ returnJson}

有意义吗?