6
votes

Encodage des composants d'URL avec une ampersand et

semble être une question très simple ici:

J'ai un programme où quelqu'un entre dans une chaîne m & s code> dans un formulaire et exécutant une requête. Je comprends que le & code> est un caractère réservé et doit donc être codé. Le problème est qu'il semble nécessiter de coder deux fois dans certains contextes. P>

Si l'URL est utilisée dans un événement JavaScript onclick code>, l'encodage normal de l'URL semble fonctionner correctement (l'opérateur peut cliquer sur une en-tête de colonne pour trier): P> xxx pré>

Toutefois, si l'URL est utilisée dans une ancrage (bien que l'ancrage utilise réellement AJAX), il semble nécessaire de coder deux fois: P>

<a href="javascript:AJAX_Get('http://10.0.0.195/program.exe?Qry147=M%2526S&sortmethod1=147')" title='Refresh'>Refresh</a>


3 commentaires

Pouvez-vous donner un exemple comment vous utilisez réellement cette valeur?


Désolé, la question n'a pas été bien affichée correctement. Devinez que j'ai besoin de travailler pour échapper à mes commentaires! Holtez sur une seconde, je vais essayer de le modifier.


Voir la source ... Parlez de manque d'initiative! :) La question s'affiche maintenant correctement, excuses pour cela.


3 Réponses :


1
votes

Je recommande de stocker le paramètre dans sa forme non connectée, puis de coder au moment de son utilisation, que ce soit dans l'événement OnClick ou l'ancre.


0 commentaires

8
votes

Si vous construisez tout le texte HTML en utilisant des étapes simples, certaines des difficultés disparaîtront. Donc, en prenant votre exemple, vous souhaitez coder le paramètre de requête suivant: xxx pré>

Lorsque vous incorporez cette chaîne sous forme de paramètre de requête dans une URL, vous devez l'urlencer, comme vous le savez déjà. . La chaîne urlencode est m% 26s code>. L'URL complète ressemble alors à ceci: p>

<a href="javascript:myQuery('M&amp;S')">anchor</a>
<a onclick="myQuery('M&amp;S')">event</a>


1 commentaires

Belle description - je pense que je comprends pourquoi ça ne fonctionne pas maintenant. On dirait que cela serait une solution réalisable. Je peux descendre cet itinéraire bien que j'ai trouvé une autre solution légèrement hacky.