我在服務器上有一個文件夾,裏面有一些圖像。我想讓我的客戶端代碼讀取此文件夾的內容(圖像),然後在div上顯示此圖像。我認爲這對AJAX來說很簡單,但AJAX似乎返回了一些嵌入在圖像中的原始數據。我一直在尋找一種方式來獲取圖像的網址,而不是這些數據,但我試過的一切都不起作用。我真的更喜歡在客戶端這樣做。我很感激任何建議,你可以給我關於這個:)。通過客戶端從服務器檢索圖像
感謝,
elshae
//Here is some of my code...
var info = new OpenLayers.Control.WMSGetFeatureInfo({
url: 'http://localhost:8080/geoserver/wms',
title: 'Identify features by clicking',
queryVisible: true,
eventListeners: {
getfeatureinfo: function(event){
map.addPopup(new OpenLayers.Popup.AnchoredBubble(
"chicken",
map.getLonLatFromPixel(event.xy),
null,
event.text + '<div> Hello Tibet :)</div>' + load('./Photos/potalaPalace.jpg'),
null,
true
));
}
}
});
map.addControl(info);
info.activate();
});
function ahah(url) {
//document.getElementById(target).innerHTML = ' Fetching data...';
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
if (req != undefined) {
req.onreadystatechange = function() {ahahDone(url);};
req.open("GET", url, true);
req.send("");
}
}
function ahahDone(url) {
if (req.readyState == 4) { // only if req is "loaded"
if (req.status == 200) { // only if "OK"
//'<div><img src="' + req.response + '"></div>';
var img = new Image();
img.src = req.url;
'<div><img src="' + img + '"/></div>';
} else {
" <div> AHAH Error:\n"+ req.status + "\n" +req.statusText + "</div>";
}
}
}
function load(name) {
ahah(name);
return false;}
您的圖片是否存在於文件系統中?如果是這樣,你應該加載一個文件名列表,而不是數據。您可以使用您正在使用的任何服務器端語言生成文件夾內容列表,也可以使用「dir> images.txt」或等價物從控制檯手動創建一個文件夾內容列表。 – lincolnk 2010-10-12 21:19:17
你不能使用任何服務器腳本,如asp.net或php?所以你可以創建一個web服務,它返回圖像路徑 – Mouhannad 2010-10-12 21:21:13
嗯,一切都很好,除了圖像顯示爲原始數據/字符。從這些迴應中,我假設沒有簡單的方法將這些數據轉換回來呈現圖像?我可能只是使用Ajax搜索文件夾並將文件名返回給我?我已經準備好了所有的代碼:( – elshae 2010-10-12 21:49:31