Javascript “逃跑”/&引用;不';我不在IE9工作
我有一个javascript函数,它使用一些捕获的参数构建URI片段,然后提交表单 例如:Javascript “逃跑”/&引用;不';我不在IE9工作,javascript,cross-browser,escaping,uri,internet-explorer-9,Javascript,Cross Browser,Escaping,Uri,Internet Explorer 9,我有一个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 s
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文档,以便:
- Firefox 3.x-4.x(未在2.x上测试)
- Internet Explorer 6-8
- Google Chrome 9.x-11.x(其他版本未经测试)
- Opera 10.x-11.x(其他版本未经测试)
而不是像这样:
IE9没有转义
/
,并将它们作为URI上路径分隔符的一部分
问题是:我怎样才能在IE9中正确生成URI片段呢?
提前感谢。转义函数对特殊字符进行编码,除了:*@-\+./。 所以,在客户端替换它,然后将其放回服务器端 JS
var f2 = form.thedate.value.replace(/\//g, "x");
JAVA
f2 = f2.replaceAll("x", "/");
转义函数对特殊字符进行编码,除了:*@-\+./。 所以,在客户端替换它,然后将其放回服务器端 JS
var f2 = form.thedate.value.replace(/\//g, "x");
JAVA
f2 = f2.replaceAll("x", "/");
这不是表单或操作URL的问题。您需要在编写PDF时发送正确的标题 在php中
标题(“内容配置:附件;文件名:comparativoCajasRegistradas.pdf”) 您的表单或操作URL没有问题。您需要在编写PDF时发送正确的标题 在php中
标题(“内容配置:附件;文件名:comparativoCajasRegistradas.pdf”) 对于查询参数值,您可能希望尝试
encodeURIComponent
而不是escape
encodeURIComponent()函数
对URI组件进行编码
此函数编码特殊的
人物。此外,它还编码
以下字符:,/?:@&
=+$#
对于查询参数值,您可能希望尝试
encodeURIComponent
而不是escape
encodeURIComponent()函数
对URI组件进行编码
此函数编码特殊的
人物。此外,它还编码
以下字符:,/?:@&
=+$#
正在发送的HTTP头是什么?正在发送的HTTP头是什么?感谢您的建议,我编辑了您的答案以替换日期中出现的所有
/
,而不仅仅是第一个。另外,我使用的是Java,所以服务器端代码应该是f2=f2.replaceAll(“x”,“/”)代码>。虽然,这对我来说不起作用。这有点幼稚,如果字符串中有x呢?只需使用encodeURIComponent
编码就可以了。请尝试encodeURIComponent()。。。它与encodeURI()和escape()都不同。感谢您的建议,我编辑了您的答案以替换date reather中出现的所有/
,而不仅仅是第一个。另外,我使用的是Java,所以服务器端代码应该是f2=f2.replaceAll(“x”,“/”)代码>。虽然,这对我来说不起作用。这有点幼稚,如果字符串中有x呢?只需使用encodeURIComponent
编码就可以了。请尝试encodeURIComponent()。。。它与encodeURI()和escape()都不同。+1:escape已被弃用,但我认为这不是真正的问题。我认为James说得对,指定了要下载的文件名。@nihcap:但是,您仍然应该使用encodeURIComponent()
+1:escape已被弃用,但我认为这不是真正的问题。我认为James说得对,指定了要下载的文件名。@nihcap:但是,您仍然应该使用encodeURIComponent()