2011-06-03 62 views
0

我看了很多帖子,但似乎沒有任何幫助。我有一個ajax客戶端,它從Jetty服務器上運行的遠程Web服務中檢索圖像。如果我使用瀏覽器(Firefox等),則成功顯示檢索結果。如果我使用ajax腳本,圖像顯示爲一堆不可讀的字符。圖像是否需要以某種方式從ajax案例中的服務器發送出去?我已經嘗試了許多不同的方法,包括數據URI,但似乎沒有任何工作。有任何想法嗎?我將不勝感激。 Thakns。DIsplaying由Ajax檢索圖像

回答

1

實際上得到的圖像asyncronously是用JavaScript做它的字面方式:

var img = new Image(); 
img.src = "http://your img uri"; 
document.getElementById("image_container").appendChild(img); 

無需XHR類型AJAX來得到它。

如果你需要一個成功回調,可以在img.src定義之前添加:

img.onload = function() { /* ... */ } 
0

Ajax中的X代表XML。所以結果基本上是文字。 你可以改變這個,但取決於使用的框架。像jQuery

也許你正在嘗試做一些不需要AJAX的東西。 或者您的AJAX只檢索該圖片的網址。

如果您已經在實例化一個VAR像IMG DOM對象:

var img = document.getElementById('my_img'); 

並且已經有圖片的路徑(即: '/img/img.jpg')

嘗試

img.src='/img/img.jpg'; 
+0

好的意見,謝謝。但是,我確實需要Ajax,因爲服務器端沒有寫任何東西(我正在處理移動設備),而數據(圖像)在被捕捉後駐留在內存中。我使用p2p技術來路由請求,因爲移動設備在NAT後面=因此,即使我將這些圖像保存在服務器上,它們也不會被URL尋址。我看到一些聲明聲稱要麼將我收到的字節數組轉換爲base64編碼將工作: – kypriakos 2011-06-03 20:56:05

+0

對不起,我完成之前的消息被切斷 - 這裏是我在網上發現的聲明,聲稱使用responseText: – kypriakos 2011-06-03 20:56:49

+0

好吧stackoverflow中的[ENTER]不會給你一個新行 - 再次嘗試:var responseImage = document.createElement(「responseImage」); responseImage.src =「data:image/jpg; base64,」+ xhr.responseText; newhtml2 =「>」;我認爲上面提到的那個Ajax是異步的XML的確是這裏的aha。與可以返回附件的RPC/SOAP調用不同,Ajax不是爲XML通信以外的任何內容構建的。並保存在客戶端上的文件是一個從Ajax(安全問題)不是(安全問題) – kypriakos 2011-06-03 21:07:42