2011-07-13 61 views
0

朋友:使用傳遞的url檢查文件是否存在於網絡上

我發現這兩段代碼可以通過網絡測試文件存在。 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') ; 
+0

他們會永遠是圖像嗎? –

+0

對於Yahoo對象庫中的文件,您可以查找這個頭文件:'x-ysws-error-detail:not_in_objectstore' – Acorn

回答

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

1

不能使用AJAX調用來獲得來自其他域的資產。你會得到一個沙箱例外。

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"); 
     } 
    } 
} 

但是,這隻會在您停留在同一個域時起作用,否則您會與同源策略衝突。

相關問題