2015-04-01 22 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

相关问题