Comment puis-je le remplacer %2C avec un <virgule> en javascript?
#&q=car&category=Car%20Audio%2CAccessories&brand=
J'ai emprunté cette fonction à partir d'une précédente question posée sur DONC:
function insertParam(key, value)
{
key = escape(key); value = escape(value);
var kvp = document.location.hash.substr(1).split('&');
var i=kvp.length; var x; while(i--)
{
x = kvp[i].split('=');
if (x[0]==key)
{
x[1] = value;
kvp[i] = x.join('=');
break;
}
}
if(i<0) {kvp[kvp.length] = [key,value].join('=');}
//this will reload the page, it's likely better to store this until finished
document.location.hash = kvp.join('&');
}
Je l'utilise comme ceci:
insertParam("category",xy);
insertParam("brand",zy);
Mon problème est qu'il est en train de décoder virgule pour %2C. Je sais que je peux gérer les caractères sur le côté serveur, mais comment puis-je le faire paraître jolie avec javascript? Par jolie, je veux dire remplacer %2c avec une virgule.
OriginalL'auteur Ryan | 2012-02-05
Vous devez vous connecter pour publier un commentaire.
decodeURIComponent(foo)
est la chose que vous cherchez.Modifier: mal lu votre question.
Utilisation
replace(/&/g, "%26").replace(/=/g, "%3D")
au lieu deescape
sur une clé et une valeur pour ce faire.Aucun des 3 fonctions
encodeURI
,encodeURIComponent
ouencode
de travail pour cette tâche, car ils codent pour des virgules ou ne pas coder&=
.OriginalL'auteur copy
Cela a fonctionné pour moi pour l'annulation
encodeURIComponent()
sur les Uri qui contiennent des virgules:OriginalL'auteur hobs
Je ne sais pas pourquoi dans la réponse précédente qui a été barré, mais la réponse était correcte.
Donc, vous brisez vos chaînes de requête en éléments, en divisant par & symbole. Que vous divisez le résultat par = symbole et appliquer decodeURIComponent sur à la fois le nom et la valeur.
ps:
key = escape(key); value = escape(value);
vous ne devez pas utiliser échapper ici (c'est différent pour les différents navigateurs. et par "différents", je voulais dire IE). Utilisation encodeURIComponent.pps:
because they either encode commas or don't encode &=
???sorties
%26%3D%2C
=
et&
(comme GET-paramètres). Pour le faire correctement,=
et&
doivent être encodés, ce qui peut être fait en utilisantdecodeURIComponent
ouescape
. Ces deux fonctions, cependant, aussi encoder,
qui n'est pas voulu.decodeURI
ne codent pas=
ou&
il n'est donc pas adapté.Je ne sais pas pourquoi", " ne doit pas être codée.
Il "n'a pas l'air assez" (pas mon opinion personnelle). Aussi il n'est pas vraiment nécessaire.
OriginalL'auteur Cheery