2014-05-17 40 views
0

我需要能夠在JavaScript中檢測到丟失的圖像。在JavaScript中檢測404代碼

服務器上的PHP無法使用,因爲href是由JavaScript計算的。 腳本文件時存在的工作原理是:

Data_ID = _DataRow.getDataItem()["Data_ID"];// Picks up the ID of the data 
    _HitJPG = document.getElementById("HitJPG"); 
JPGFileName = _DataRow.getDataItem()["JPGFileName"]; 
directory = JPGFileName.slice(0, 10); 
directory = directory.replace(/-/g, "/"); 

_HitJPG.innerHTML = "<a href=http://77.88.99.54/data/" + directory + "/" + JPGFileName + " ><h3>JPG File for this Data </h3>" + JPGFileName + "</a>"; 

我如何檢測HTTP 404代碼之前我在div設置「的innerHTML」?

+0

你總是可以使用jQuery的'在它ajax'功能有很大幫助,並分類跨瀏覽器的問題。 – ArtOfCode

+0

做一個AJAX請求並等待響應。 (你做**不需要**這個簡單的任務需要jQuery。) – ComFreek

回答

3

您可以使用onloadonerror事件,以檢測用是否可以將圖像加載

var Data_ID  = _DataRow.getDataItem()["Data_ID"]; 
var _HitJPG  = document.getElementById("HitJPG"); 
var JPGFileName = _SETIDataRow.getDataItem()["JPGFileName"];//"2014-04-29T13-36-27.JPG" 
var directory = JPGFileName.slice(0, 10); 

directory = directory.replace(/-/g, "/"); 

var image = new Image(); 

image.onerror = function() { 
    // fail - image not available 
} 

image.onload = function() { 
    // success - image available 

    _HitJPG.innerHTML = "<a href=http://77.88.99.54/data/" + directory + "/" + JPGFileName + " ><h3>JPG File for this Data </h3>" + JPGFileName + "</a>"; 
} 

image.src = "http://77.88.99.54/data/" + directory + "/" + JPGFileName 
+0

甜 - 謝謝你的答案。工作正常 –

0

您可以使用Ajax

var jqxhr = $.ajax("your iamge url") 
.done(function() { 
alert("success"); 
}) 
.fail(function(jqXHR, textStatus) { 
alert("Request failed: " + textStatus); 
}) 
.always(function() { 
alert("complete"); 
}); 

參考http://api.jquery.com/jquery.ajax/

0

你可以這樣做與ajax請求,當你從服務器得到響應時,檢查t他響應狀態,例如的JavaScript/jQuery的功能:

function fileExists(urlToCheck){ 
    var fileFound = true; 
    $.ajax({ 
     url: urlToCheck, 
     type: "GET", 
     success: function(data, textStatus, xhr) { 
      console.log(xhr.status); 
      if(xhr.status == 404) fileFound= false; 
     }, 
     complete: function(xhr, textStatus) { 
      console.log(xhr.status); 
      if(xhr.status == 404) fileFound= false; 
     } 
    }); 
    return fileFound; 
} 

我覺得這個功能可以提高更多,通過考慮不同的HTTP響應代碼,從404碼的不同,但是這並不意味着該文件存在於服務器中。

1

你可以在上面的回答中使用ajax調用這個方法。讓我給ü代碼片段:

$.ajax({ 
    url: '<image file name>', // your file name 
    success: function(data){ 
    alert('exists'); 
    }, 
    error: function(data){ 
    alert('does not exist'); 
    }, 
}) 

上面的代碼在計算器已經給出了其他JavaScript相關的問題。你也可以檢查一下,以便澄清。

Test if a file exists with javascript