使用url传递检查Web上的文件是否存在

时间:2011-07-13 15:48:29

标签: javascript jquery

朋友:

我找到了这两段代码来测试网络上存在的文件。     JQuery版本非常受欢迎,第二个版本是简单的javascript。     我只是从yahoo.com抓了一个文件 -     http://l.yimg.com/cv/mntl/tra/11q2/img_48880236.jpg

使用下面的代码制作一个小的.html文件。但即使我修改了.jpg文件,我总是在我的消息中获得SUCCESS(或者更确切地说是EXISTS)     上文提到的。我在IE *和Google Chrome中尝试了我的.html文件。已经链接了以下jQuery文件--jquery-1.4.2.min.js。     欢迎任何帮助或建议。

JQuery版本 -

$.ajax({
    url:'http://l.yimg.com/cv/mntl/tra/11q2/img_48880236--.jpg',
    type:'HEAD',
    error:
        function(){
            alert('DOES NOT EXISTS');
        },
    success:
        function(){
            alert('EXISTS');
        }
});

Javascript版本 -

var _url="http://l.yimg.com/cv/mntl/tra/11q2/img_48880236--.jpg" ;
var http = new XMLHttpRequest();
http.open('HEAD', _url, false);
http.send();
http.status !=404 ? alert('EXISTS') : alert('DOES NOT EXIST') ;

3 个答案:

答案 0 :(得分:1)

您无法使用ajax调用从其他域获取资源。你得到一个沙盒例外。

答案 1 :(得分:0)

仅适用于图片:

$('<img />')
    .bind('error', function(event) { alert('error 1'); })
    .bind('load', function(event) { alert('load 1'); })
    .attr('src', 'http://l.yimg.com/cv/mntl/tra/11q2/img_48880236.jpg');


$('<img />')
    .bind('error', function(event) { alert('error 2'); })
    .bind('load', function(event) { alert('load 2'); })
    .attr('src', 'http://l.yimg.com/cv/mntl/tra/11q2/img_48880236__.jpg');

example

答案 2 :(得分:0)

在测试jQuery版本时,它可以工作。 JS版本是完全错误的。

XMLHttpRequest的使用非常不正确。应该做些什么

http.onreadystatechange = function() {
    if(http.readyState == 4) {
        if(http.status == 200) {
            alert("EXISTS");
        } else { // this else is tricky if the server answers e.g. with a redirection.
                 // it will work in most of the cases.
            alert("DOES NOT EXISTS");
        }
    }
}

但这只会在您停留在同一个域名时起作用,因为否则您会与同源政策发生冲突。