如何对查询字符串进行编码,使其成为javascript中另一个查询字符串的值?
我有一个javascript函数,它作为一个查询字符串值传递给另一个查询字符串 换句话说,我希望查询字符串为:如何对查询字符串进行编码,使其成为javascript中另一个查询字符串的值?,javascript,encoding,query-string,Javascript,Encoding,Query String,我有一个javascript函数,它作为一个查询字符串值传递给另一个查询字符串 换句话说,我希望查询字符串为: http://www.somesite.com/?somequery=%3fkey%3dvalue1%2520%26%2520key2%3value3 但是,如果我这样重定向: var url = 'http://www.somesite.com/?somequery='; url += escape('?key=value1&key2=value2'); window.lo
http://www.somesite.com/?somequery=%3fkey%3dvalue1%2520%26%2520key2%3value3
但是,如果我这样重定向:
var url = 'http://www.somesite.com/?somequery=';
url += escape('?key=value1&key2=value2');
window.location = url;
结果是http://www.somesite.com?somequery=?key1=value1&key2=value2
在firefox和IE7中,这意味着我无法正确解析查询字符串
我还尝试使用编码器组件,但也不起作用
是否有其他函数或黑客强制重定向以保持somequery
值转义
javascript:alert(escape('?key=value1&key2=value2'));
对我来说可以吗?编码器组件可以工作。(您可能需要也可能不需要前导“?”,这取决于脚本所期望的内容。) 带我去: 当您将鼠标悬停在上面时,它可能会在浏览器的状态栏中显示一次解码,但最终会出现在正确的位置
escape/unescape()对查询参数进行编码是错误的,它获取的是Unicode字符,加的是错误的。几乎没有一种情况下escape()是您真正需要的。Native
escape
方法可以做到这一点。但您也可以创建自定义编码器,如:
function encodeUriSegment(val) {
return encodeUriQuery(val, true).
replace(/%26/gi, '&').
replace(/%3D/gi, '=').
replace(/%2B/gi, '+');
}
这将替换查询字符串中使用的键。此外,您还可以通过添加所需的键值对,将其应用于任何其他自定义编码。是的,我敢肯定escape已被弃用。很好的调用。这很有效-尽管在解析查询字符串时,我现在必须对其解码两次。似乎当它被编码一次时,它将被浏览器解码,但当它被编码两次时,它将根本不会被解码。奇怪。从1.5开始就不推荐了
function downloadFile(){
var filePath = "C:/Users/HP/Desktop/Project Folder/DemoProject/";
var fileInfo = "Error_Issue Minor Cosmetic & Major Fatal Issues (Demo_Project) (2017)_GeneratedOn_12_21_2017 21924 AM.xlsx";
if((filePath != undefined && filePath.length > 0) && (fileName != undefined && fileName.length > 0)){
var downloadUrl = "../download?fileName="+encodeURIComponent(fileName)+"&filePath="+encodeURIComponent(filePath);
$window.location = downloadUrl;
}else{
alert("Please define a fileName for downloading...");
}
}
function downloadFile(){
var filePath = "C:/Users/HP/Desktop/Project Folder/DemoProject/";
var fileInfo = "Error_Issue Minor Cosmetic & Major Fatal Issues (Demo_Project) (2017)_GeneratedOn_12_21_2017 21924 AM.xlsx";
if((filePath != undefined && filePath.length > 0) && (fileName != undefined && fileName.length > 0)){
var downloadUrl = "../download?fileName="+encodeURIComponent(fileName)+"&filePath="+encodeURIComponent(filePath);
$window.location = downloadUrl;
}else{
alert("Please define a fileName for downloading...");
}
}