2012-05-21 26 views
5

我需要在JSP內動態加載圖像。我試過 <img src="servletUrl?p1=x&p2=y"/>,但問題是URL太長而無法使用GET發送。動態生成的圖像,使用POST獲取

我現在正在執行POST調用。在servlet中,我根據發送的參數生成餅圖圖像。該圖像沒有被保留,所以我不能返回像「images/image1.jpg」之類的東西,並將其設置爲圖像的src。

因此,我將圖像作爲字節數組返回並設置適當的圖像內容類型。

我的問題是:一旦我有JavaScript中的圖像字節,我該如何顯示它們在相應的img標籤中?

這是我的AJAX調用:

new Ajax.Request(url, { 
     method: 'post', 
     parameters: params, 
     onComplete: function(request) { 
        alert(request.responseText);  
     } 
}); 
+0

爲什麼URL太長?這似乎有點奇怪... – beerbajay

+0

嘿,你可以撥弄出來......這會幫助 –

+0

@beerbajay:因爲其中一個參數是一個JSON化文檔,有很多字段。這是一個尚未保存的文檔,並且基於用戶在各個字段中輸入的值,從servlet生成並返回餅圖。 – madalina

回答

2

我還沒有嘗試這個我自己,但它應該工作。 您可以使用dataUrl創建一個圖像並設置其src。您必須將byte[]轉換爲base64編碼的字符串才能使其工作。

new Ajax.Request(url, { 
     method: 'post', 
     parameters: params, 
     onComplete: function(response) { 
      var img = new Image(); 
      img.src = "data:image/png;base64," + response; 

      document.body.appendChild(img); 
     } 
}); 
+0

謝謝。你的答案爲我解決了一些問題。 :) – madalina

+0

我很高興我可以幫助:) – Andreas

0

下面是從我頭頂上的解決方案,應該在所有的瀏覽器:

相反的AJAX和<img>標籤,使用預填表格隱藏字段與所有必要的POST參數與onload處理程序設置爲提交此表單到圖像服務腳本。使此腳本返回將在此iframe中顯示的純圖像,並保持頁面的其餘部分不變。