J'ai une fonction javascript qui transmet comme chaîne de requête une autre chaîne de requête.
En d'autres termes, je veux que la chaîne de requête soit:
http://www.somesite.com/?somequery=%3fkey%3dvalue1%2520%26%2520key2%3value3
Cependant, si je redirige comme ceci:
var url = 'http://www.somesite.com/?somequery=';
url += escape('?key=value1&key2=value2');
window.location = url;
il se termine par http://www.somesite.com?somequery=?key1=value1&key2=value2
dans Firefox et IE7, ce qui signifie que je ne peux pas analyser correctement la chaîne de requête.
J'ai aussi essayé d'utiliser encodeURIComponent qui ne fonctionnait pas non plus.
Existe-t-il une autre fonction ou un hack pour forcer la redirection à garder la valeur somequery
échappée?
encodeURIComponent fonctionnera. (Vous pouvez ou non vouloir le caractère principal?, En fonction de ce que le script attend.)
var c= 'd e'
var query= '?a=b&c='+encodeURIComponent(c);
var uri= 'http://www.example.com/script?query='+encodeURIComponent(query);
window.location= uri;
M'emmène à:
Lorsque vous survolez cette icône, celle-ci peut apparaître une fois décodée dans la barre d'état du navigateur, mais vous vous retrouverez au bon endroit.
escape/unescape () est une mauvaise chose pour le codage des paramètres de requête, il obtient les caractères Unicode et les plus erronés. Il n'y a presque jamais de cas où escape () est ce dont vous avez vraiment besoin.
La méthode native escape
fait cela. mais vous pouvez aussi créer un encodeur personnalisé comme:
function encodeUriSegment(val) {
return encodeUriQuery(val, true).
replace(/%26/gi, '&').
replace(/%3D/gi, '=').
replace(/%2B/gi, '+');
}
cela remplacera les clés utilisées dans les chaînes de requête. De plus, vous pouvez l’appliquer à n’importe quel autre encodage personnalisé en ajoutant les paires clé-valeur nécessaires.
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...");
}
}