【发布时间】:2016-02-15 17:44:26
【问题描述】:
我正在创建一个浏览大量图片的应用程序。至此,该部分项目已完成,它会排序、过滤和加载正确的图片,甚至将它们拆分为单独的页面以加快加载速度。
这很好用,但每页加载 25 张图片仍然需要 8 秒以上。我进行了一些研究,得出的结论是,使用异步 jQuery Ajax 请求最好是同时尽可能快地加载它们。
到目前为止,这是我的代码:
var imageArray = <?php if (!empty($images)) {echo '["' . implode('", "', $images) . '"]';} else {echo "false";} ?>;
console.log(imageArray);
console.log(imageArray.length);
for (i = 0; i < imageArray.length; i++) {
$.ajax({
type: 'GET',
url: imageArray[i],
dataType: 'image/jpg',
async: true,
success: function (data) {
$("#" + i).attr("src", data);
}
});
}
这段代码的问题是它只加载一个带有灰色边框的空白正方形。当我修改代码并在 Chrome 的控制台中运行它时,data 最终成为一串乱七八糟的字符,我认为这是原始图像数据。
我已经搜索了几天,包括在 SO 上,但我还没有找到满足我需要的解决方案。相反,我找到了使用 jQuery attr() 简单地将 url 放入图像源的解决方案,这不是我需要的。
如果有人可以提供任何类型的解决方案来修复此代码,或者甚至可能是获取所有图像的不同且更有效的方法,我愿意接受任何事情。
imageArray:http://pastebin.com/03tvpNey
问候, 伊曼纽尔
【问题讨论】:
-
你的图像数组返回什么?并且数据类型应该是
image/jpg -
图片数组返回图片的相对url,即.jpg。到目前为止,我已经更新了我的代码以包含正确的类型。图像数组如下所示:pastebin.com/03tvpNey
-
那么你是在加载这个 ajax 调用吗?
-
你可以试试这个插件jquery.eisbehr.de/lazy
-
@SusheelSingh 感谢插件。我已经检查过了,它看起来很有希望,但是下面的用户有一个更好的主意,就是将图像缩小为缩略图以节省加载时间。不过感谢您的帮助!
标签: javascript php jquery ajax image