我有一个javascript函数,它使用一些捕获的参数构建一个URI片段,然后提交我的表单。
示例:
function consultResource(contextName){
var form = document.forms[0];
var f1 = form.thename.value;//accepts strings without special symbols
var f2 = escape(form.thedate.value); //accepts only strings in the form 'dd/mm/yyyy'
var action = "/"+contextName+"/CtrlComparison?name="+f1+"&date="+f2;
form.action = action;
form.submit();
}
生成的URI片段示例为
/MyContext/CtrlComparison?name=report01&date=06/05/2011
此代码段有效,提交表单并将PDF文档带好:
但我也需要它在Internet Explorer 9中工作。目前,当我在IE9中提交相同的信息时,我收到以下消息:
而不是像这样的东西:
IE9没有转义/
并将它们作为URI上路径分隔符的一部分。
问题是:我怎样才能在IE9中正确生成我的URI片段?
提前致谢。
答案 0 :(得分:3)
这不是您的表单或操作网址的问题。在写出PDF时,您需要发送正确的标题。
在你的PHP中 header(“Content-disposition:attachment; filename:comparativoCajasRegistradas.pdf”);
答案 1 :(得分:1)
对于查询参数值,您可能需要encodeURIComponent
而不是escape
。
encodeURIComponent()函数 编码URI组件。
此功能编码特殊 字符。另外,它编码 以下字符:,/? :@& = + $#
答案 2 :(得分:0)
Escape函数对特殊字符进行编码,但以下情况除外:* @ - _ +。 /。 所以在客户端替换它然后把它放回服务器端。
<强> JS 强>
var f2 = form.thedate.value.replace(/\//g, "x");
<强> JAVA 强>
f2 = f2.replaceAll("x", "/");