Javascript 我能';可以说,我没有得到任何结论
我知道这类问题以前已经被问过一千次了,我读了很多关于这方面的帖子,但我还是无法理解。在这里发布之前,我自己尝试了很多例子,但都没有成功 我基本上是尝试从不同的文件夹返回图像,但我需要以特定的方式分别处理每个目录中的图像。一般来说,我对json和ajax不是很熟悉,所以这可能就是我不太理解的原因 无论如何,我的想法是简单地创建一个for循环,然后对于每个目录,通过ajax获取图像并处理它们 显然,这并没有像我预期的那样工作,我在某个地方读到,我需要一个javascript“闭包”来让它工作,但它从来没有工作过。以下是我的基本代码,没有闭包:Javascript 我能';可以说,我没有得到任何结论,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我知道这类问题以前已经被问过一千次了,我读了很多关于这方面的帖子,但我还是无法理解。在这里发布之前,我自己尝试了很多例子,但都没有成功 我基本上是尝试从不同的文件夹返回图像,但我需要以特定的方式分别处理每个目录中的图像。一般来说,我对json和ajax不是很熟悉,所以这可能就是我不太理解的原因 无论如何,我的想法是简单地创建一个for循环,然后对于每个目录,通过ajax获取图像并处理它们 显然,这并没有像我预期的那样工作,我在某个地方读到,我需要一个javascript“闭包”来让它工作,但它从
$.getJSON('/img/content/galleries/', function(directories) {
for (var dirnum = 2; dirnum < directories.length - 1; dirnum++) {
var folder = '/img/content/galleries/' + directories[dirnum] + '/';
$.ajax({
url: folder,
success: function(data) {
$("#gallery").text("");
$(data).find("a").attr("href", function(i, val) {
if (val.match(/\.jpg|\.png|\.gif/)) {
$("#gallery").append("<img src='" + folder + val + "'>");
}
}); // end data.find
} // end success
}); // end ajax
} // end for loop
}); // end getJSON
$.getJSON('/img/content/gallers/',函数(目录){
for(var dirnum=2;dirnum
这段代码运行,但总是在gallery1(我的目录名)之前给我gallery2的结果,然后给出一个错误,说它在gallery2文件夹中找不到gallery1中的图像
如果有人能帮我在这里插入某种闭包,那就太好了。已经浪费了几个小时,到目前为止没有结果。我只是不明白这个概念
还请注意,我之前从gallery1和gallery 2中父文件夹中的php文件中获取了“目录”值,其中包含该代码:
<?php
$directories = scandir('.');
header('Content-Type: application/json');
echo json_encode($directories);
?>
或者,如果你们认为有一种更简单的方法可以在javascript中实现这一点,我洗耳恭听!我知道我可以用php和一些javascript混合使用的另一种方式来实现,但我只想在这里使用javascript
先谢谢你
Erick p.主要缺陷是每个请求都会清空容器。。。因此,仅显示上次收到的请求的内容 通过在请求循环开始之前清空容器来修复此问题 您无法控制收到的请求的顺序。。。因此,如果顺序很重要,则需要对请求使用承诺,以确保以正确的顺序填充数据
$.getJSON('/img/content/galleries/', function(directories) {
//empty container before starting request loop
$("#gallery").empty();
for (var dirnum = 2; dirnum < directories.length - 1; dirnum++) {
// wrap ajax in IIFE closure
(function(dirnum){
var folder = '/img/content/galleries/' + directories[dirnum] + '/';
$.ajax({
url: folder,
success: function(data) {
//$("#gallery").text("");// move up above loop
$(data).find("a").attr("href", function(i, val) {
if (val.match(/\.jpg|\.png|\.gif/)) {
$("#gallery").append("<img src='" + folder + val + "'>");
}
}); // end data.find
} // end success
}); // end ajax
})(dirnum);//end closure in for loop
} // end for loop
}); // end getJSON
$.getJSON('/img/content/gallers/',函数(目录){
//启动请求循环之前清空容器
$(“#图库”).empty();
for(var dirnum=2;dirnum
不太清楚为什么从
dirnum
的第三个索引开始……假设目录中有不需要的路径。在服务器上过滤这些内容会更干净感谢Charlie的帮助!我通过闭包修复了它,每个人都告诉我:
$.getJSON('/img/content/galleries/', function(directories) {
$("#gallery").text("");
for (var dirnum = 2; dirnum < directories.length - 1; dirnum++) {
(function(dirnum) {
var folder = '/img/content/galleries/' + directories[dirnum] + '/';
$.ajax({
url: folder,
success: function(data) {
$(data).find("a").attr("href", function(i, val) {
if (val.match(/\.jpg|\.png|\.gif/)) {
$("#gallery").append("<img src='" + folder + val + "'>");
}
}); // end data.find
} // end success
}); // end ajax
})(dirnum);
} // end for loop
}); // end getJSON
$.getJSON('/img/content/gallers/',函数(目录){
$(“#图库”)。文本(“”);
for(var dirnum=2;dirnum
查理,我也会尝试你的解决方案,作为另一种选择。再次感谢
埃里克谢谢你,查理。我真是太傻了。真不敢相信我没看到这个。虽然这回答了部分问题,但我仍然有一些链接从错误的目录中拍照的问题。我确实认为,如果我尝试一些我以前尝试过的“闭包”,它现在可能会起作用。我看看我会怎么做。