簡體   English   中英

轉義“/”在IE9中不起作用

[英]Escaping “/” doesn't work in IE9

我有一個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文檔,可以:

  • Firefox 3.x-4.x(未在2.x上測試)
  • Internet Explorer 6-8
  • Google Chrome 9.x-11.x(未經測試的其他版本)
  • Opera 10.x-11.x(未測試的其他版本)

但我也需要它在Internet Explorer 9中工作。 目前,當我在IE9中提交相同的信息時,我收到以下消息:
真實的結果

而不是像這樣的東西:
預期結果

IE9沒有轉義/並將它們作為URI上路徑分隔符的一部分。

問題是: 我怎樣才能在IE9中正確生成我的URI片段?

提前致謝。

這不是您的表單或操作URL的問題。 在寫出PDF時,您需要發送正確的標題。

在你的php標題中(“Content-disposition:attachment; filename:comparativoCajasRegistradas.pdf”);

對於查詢參數值,您可能希望嘗試使用encodeURIComponent而不是escape

encodeURIComponent()函數對URI組件進行編碼。

此功能對特殊字符進行編碼。 另外,它編碼以下字符:,/? :@&= + $#

Escape函數對特殊字符進行編碼,但以下情況除外:* @ - _ +。 /。 所以在客戶端替換它然后把它放回服務器端。

JS

var f2 = form.thedate.value.replace(/\//g, "x");

JAVA

f2 = f2.replaceAll("x", "/");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM