图像加载失败 - Jquery捕获事件&再试一次

时间:2017-07-14 09:02:37

标签: javascript php jquery ajax image

我正在尝试执行以下步骤以尝试加载图像,如果失败(因为图像不存在),请创建图像然后加载它。我担心的是第二次加载时图像会被缓存为失败的图像/网址,因此不会第二次加载。

步骤: - 尝试加载图片。 - 如果失败 - jQuery捕获事件 - ajax到php,创建图像,移动到位。 - 然后加载图像。 (以及所有未来的用户都可以使用已移动到位的已保存图像。)

我尝试此方法的原因是200,000个用户,只有被查看的帐户才需要图像(可能是10%) - 因此数据量较少。

有没有更好的方法来做我正在做的事情?

检查图像是否失败的Jquery:

$("img").on("error", function(){...});

感谢

2 个答案:

答案 0 :(得分:1)

我建议你创建一个ajax调用来获取图片网址。

在PHP脚本中检查图片网址是否为您提供200404状态。您可以使用file_get_contents();

https://www.sitepoint.com/community/t/display-image-from-url/6334

200案例中,显示图像,来自file_get_contents()的图像。

404返回显示后备图像。

答案 1 :(得分:1)

我不确定我的回答是否正确,如果我错了,任何人都可以让我知道。我认为您可以修改图片网址以使版本结束,例如'...?v=4',如果图片无法加载,只需将该用户的版本增加到'...?v=5'即可。您可以将sessionStorage用于此目的,使用唯一键标识图像本身,将值作为计数器,该计数器将显示图像无法加载的次数。每次发生故障时,在会话中第一次发生错误的情况下,递增计数器或将图像添加到计数器为2的sessionStorage。为此,您可能需要为用户同步版本和服务器端版本。顺便说一下,你也可以在服务器端解决这个问题,然后就不需要版本控制了。