jQuery,检查图像是否存在返回false negative

时间:2015-05-13 19:09:17

标签: jquery ajax image get

我想在将图像插入网站之前确定图像是否存在。

我已经尝试了所有方法here,并且所有方法都返回了我知道存在的图像的否定值。例如:

$.ajax({
url:'https://s3-eu-west-1.amazonaws.com/stuffstory-v2-filepicker/thumbnails/5547b98e357a7f425f8b4570/555340a1357a7f673a8b456b.png',
type:'HEAD',
error:
    function(){
        console.log('No image')
    },
success:
    function(){
        console.log('There is an image')
    }
});

返回无图像结果,但是当您按照链接时:Image它显然在那里。

我完全不知道为什么。

6 个答案:

答案 0 :(得分:4)

CORS安全策略阻止了您的跨域AJAX请求:

  

否'访问控制 - 允许 - 来源'标头出现在请求的资源上。

答案 1 :(得分:3)

您可以使用Image

var imageUrl = 'https://s3-eu-west-1.amazonaws.com/stuffstory-v2-filepicker/thumbnails/5547b98e357a7f425f8b4570/555340a1357a7f673a8b456b.png';
var img = new Image();
img.onload = function(){
    // will be called if image exists
};
img.onerror = function (){
   // will be called if image failed to download
};
img.src = imageUrl;

这样可以跨域下载图像。 另请参阅Image on MDN

答案 2 :(得分:0)

@crashet

所述
  

否'访问控制 - 允许 - 来源'标题出现在请求的上   资源。

替代方案:

使用class Foo { String name } class Bar { String name } def foobar(field, className) { def instance = className.findByName(jsonParams.field) if(!instance) { instance = new className(name: jsonParams.field) } return instance } foobar(foos, Foo) foobar(bars, Bar) 活动

  

如果在加载图片时发生错误,请执行JavaScript:

<强> HTML:

onerror

<强> JS:

<img src="https://s3-eu-west-1.amazonaws.com/stuffstory-v2-filepicker/thumbnails/5547b98e357a7f425f8b4570/555340a1357a7f673a8b456bewweweg" onerror="imgError()" />

<强> JSFiddle Demo

更多信息: http://www.w3schools.com/jsref/event_onerror.asp

答案 3 :(得分:0)

您正在调用与您的应用在不同域上的请求,这就是为什么它限制了这一点。如果您打开控制台窗口,您将看到错误。 你需要用cors实现这个目标。参考http://www.html5rocks.com/en/tutorials/cors/

答案 4 :(得分:0)

您可以使用jsonp请求加载跨域资源,例如您的案例中的图像

答案 5 :(得分:0)

您可以这样做:

sed -i 's/user_pref("network.proxy.type", 0);/user_pref("network.proxy.type", 1);/'  /home/.mozilla/firefox/xxxx.default/prefs.js