2015-04-01 43 views
1

我試圖通過POST請求發送HTML內容,但未使用Chrome在服務器端發送。在使用Mozilla時,我在jsp中獲取請求數據。 當HTML內容很小時,這適用於兩種瀏覽器。我使用Apache FOP生成帶有HTML內容的PDF。無法在Chrome上將大型HTML內容發佈到服務器上

var iframe = document.createElement('iframe'); 
iframe.setAttribute('name','eyeframe'); 
document.body.appendChild(iframe); 
var myform = document.createElement('form'); 
document.body.appendChild(myform); 
myform.setAttribute('action','myJspToRenderHtmlAsPdf.jsp'); 
myform.setAttribute('method','post'); 
myform.setAttribute('target','eyeframe'); 

var hiddenField = document.createElement("input"); 
hiddenField.setAttribute("type", "hidden"); 
hiddenField.setAttribute("name", "htmlContent"); 
hiddenField.setAttribute("value", strHTML); 
myform.appendChild(hiddenField); 
myform.submit(); 

我將HTML分成塊併發布它們並將它們重新加入到jsp中。這種做法的方法也失敗與鉻和ie。

+0

代替發送整個html,發送生成此html的URL。所以服務器把它並轉換爲PDF。 – rogeriolino 2015-04-01 13:13:52

+0

我實際上是在javascript本身生成HTML文本(XSLT轉換)。 – 2015-04-01 13:32:34

回答

2

那麼輸入鉻(或者整個的webkit)具有字符的限制 - 524288,您可以通過在控制檯輸入測試:

var el = document.createElement("input"); 
el.maxLength 

爲什麼不使用簡單FormData

var formData = new FormData(); 
formData.append("htmlContent", strHTML); 
var request = new XMLHttpRequest(); 
request.open("POST", "myJspToRenderHtmlAsPdf.jsp"); 
request.send(formData); 

有一些時間來寫簡單的演示。生成服務器響應PDF:

<a href="#" id="test">Download</a> 
<script> 

var formData = new FormData(); 
formData.append("htmlContent", 'test'); 
var request = new XMLHttpRequest(); 
request.responseType = 'blob'; 
request.open("POST", "myJspToRenderHtmlAsPdf.jsp"); 

request.onload = function(event) { 
    if (request.status == 200) { 
     var blob = new Blob([request.response], {type: 'application/pdf'}); 
     var url = URL.createObjectURL(blob); 
     var link = document.querySelector('#test'); 
     link.setAttribute('href', url); 
    } else { 
     // Handle error 
    } 
    }; 

request.send(formData, true); 
</script> 
+0

XMLHttpRequest不允許我下載PDF。這就是我使用創建動態表單的詳細過程的原因。還是呢? – 2015-04-01 13:32:11

+0

試試看[Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) – 2015-04-01 13:59:05

+1

@ThusharPSujir查看更新的答案。 – 2015-04-03 15:07:51

相關問題