2013-05-05 33 views
3

我已經完成了大量搜索並且答案不起作用,或者它不是一個好的解決方案。只是把一個引用到HTML類似的解決方案:如何從服務器端perl程序獲取圖像數據並使用javascript在div中顯示

<img src="html://localhost/cgi-bin/fd.cgi"/> 

有兩個問題,一個是圖像將會發生變化,它會得到緩存。我知道我可以在通話中放置一個隨機參數並解決問題,但另一個問題是程序運行幾秒鐘。我使用javascript,setInterval來循環。 perl程序讀取圖像文件並對其進行註釋。這需要一段時間,3或4秒鐘,並在此期間顯示空白,所以我有兩個div,一個隱藏而另一個正在顯示。邏輯是,我將加載隱藏的圖像,當加載完成時,我會隱藏第一個,並顯示第二個,下一個傳遞,反之亦然。似乎沒有任何事情可以在「加載完成」時陷入困境。無論如何,我都沒有在調試器中看到過。

ajax調用帶來的數據,但我不知道如何顯示它。我base64編碼在Perl腳本。這是javascript。

$.ajax({ type: 'GET', 
url: 'http://localhost/cgi-bin/fdmap/image.pl', 
success: function(data) 
{ 
    $('#img1').html('<img src="data:image/jpg;base64,'+data+'"'); 

}, 
error: function(data) 
{ 
    console.log("Error "); 
    return true; 
}, 

});

HTML:

<div id="img1"></div> 
<div class="hidden" id="img2"></div> 

這裏的perl的片斷

binmode STDOUT; 
print $cgi->header("image/jpg;base64"); 
open INP,"pcb.jpg"; 
my $it; 
while(<INP>) { 
    my $in = $_; 
    $it.=$in; 
} 
my $encoded = encode_base64($it); 
print $encoded; 

我只是用一個用於測試的小型JPG文件。一旦我弄清楚如何顯示圖像數據I「會當我從控制檯運行,我得到以下(截斷)輸出的perl腳本動態生成圖像

內容類型。:圖像/ JPG; BASE64^M ^ M /9J/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAF9AZwDASIA

如果我看看通過JavaScript調試器接收到的數據我看到:

HTTP/1.1 200 OK 日期:孫老師,2013年5月5日15時28分43秒GMT 服務器:Apache/2.2.14( Ubuntu的) 保持活動:超時= 15,最大= 99 連接:保持活動 傳輸編碼:分塊 內容類型:image/JPG; BASE64

並且數據在響應看起來與在控制檯上轉儲的數據相同。

但是沒有顯示任何內容,也沒有可以看到的錯誤消息。只是一個空白的屏幕。我一直在爲此工作好幾個小時。感謝你給與我的幫助。 哦,我可以不在乎,如果它在IE瀏覽器或不。

回答

1

只有具有快速掃描,所以我不知道,但是 - 你肯定比

$('#img1').html('<img src="data:image/jpg;base64,'+data+'"'); 
                 ^
          //not missing the tag-end?---+ 

,因爲你

<img src="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASAB....." 

和需求(恕我直言)

<img src="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASAB....." /> 
+0

我想知道爲什麼你可以長時間盯着某件事,以至於你錯過了那些顯而易見的事情。你是對的。謝謝修復它。 – user1424074 2013-05-05 21:47:39

相關問題