L'élément en question est un champ de formulaire de zone de texte. La chaîne de requête que j'ai ajoutée à l'URL fonctionne bien partout sauf dans la zone de texte. Si j'entre "Life is hard" dans le champ textarea du formulaire un, il remplit le champ textarea dans le formulaire cible ainsi: "Life% 20is% 20hard" Existe-t-il un moyen d'échapper aux espaces après ou pendant qu'ils sont ajoutés SANS codage quoi que ce soit en dehors du plugin UX? Comme, juste là dans la chaîne de requête ou les paramètres?

0
documentguy 8 nov. 2019 à 11:53

2 réponses

Le contenu de la chaîne de requête est toujours codé en URI, ce qui signifie que lorsque vous l'utilisez, vous toujours devez le décoder en URI. En supposant que votre chaîne de requête utilise le formulaire name=value&name=value habituel:

const entries = queryString.split("&").map(
    entry => entry.split("=").map(
        part => decodeURIComponent(part)
    )
);

entries est maintenant un tableau de [key, value] tableaux avec le contenu de la chaîne de requête, correctement décodé pour être utilisé (comme remplir un textarea).

Exemple:

const queryString = "this=that&a=b&text1=Life%20is%20good&x=y";

const entries = queryString.split("&").map(
    entry => entry.split("=").map(
        part => decodeURIComponent(part)
    )
);
for (const [name, value] of entries) {
    if (name === "text1") {
        document.getElementById(name).value = value;
    } else {
        console.log(`Value for ${name}: ${value}`);
    }
}
<textarea id="text1"></textarea>

Si la chaîne de requête n'est pas sous la forme name=value, si c'est simplement ce que vous voulez dans la zone de texte, c'est plutôt simple:

theTextArea.value = decodeURIComponent(queryString);

Exemple:

const queryString = "Life%20is%20good";

document.getElementById("text1").value = decodeURIComponent(queryString);
<textarea id="text1"></textarea>
0
T.J. Crowder 8 nov. 2019 à 09:04

L'URL sera encodée par elle-même,% 20 c'est comme ça que ça marche.

Chemin court:

decodeURI(str)

ou essayez avec:

document.write(unescape(str))
0
Hung Nguyen 8 nov. 2019 à 09:08