2009-11-20 5 views
0

Je suis en train de passer une URL comme:encodeURIComponent pour des guillemets doubles disparaît form action

my_url = 'http://somedomain.com/somepath/somepage?key= "requête"';

lorsqu'un utilisateur clique sur un formulaire.

J'ai essayé d'utiliser encodeURI et encodeURIComponent et même en utilisant des alertes pour voir que j'ai "query" ou% 22query% 22 parce que j'appelle quelque chose comme document.my_form.action = my_url mais quand le navigateur accède à cette page, je obtenir:

http://somedomain.com/somepath/somepage?key=query

Les guillemets doubles manquent. Des essais similaires avec '=', '@' sont tous retenus ... y a-t-il quelque chose qui me manque?

Merci.

Répondre

1

L'utilisation d'une chaîne de requête dans un attribut d'action d'un formulaire de méthode GET entraîne l'écrasement de la requête par les variables du formulaire lui-même.

Vous pouvez essayer d'ajouter vos valeurs en tant que champs de saisie masqués (en utilisant JavaScript).

J'ai essayé votre code, et il fonctionne très bien pour moi:

<?php 
print_r($_GET); 
?> 
<br> 
<form id="testForm" method="post"> 
<input type="submit"> 
</form> 

<script> 

var actionUrl = "http://domain.com/test.php?key=" + '"query"'; 

document.getElementById("testForm").action = actionUrl; 

</script> 

Output: 
Array ([key] => "query") 
+0

il est permis, mais oui, dans le cas d'un GET méthode forment le navigateur remplacera la chaîne de requête avec des valeurs d'entrée dans la forme. La chaîne de requête n'est pas touchée dans le cas d'un formulaire POST, mais tous les environnements côté serveur ne peuvent pas lire la chaîne de requête * et * le post-corps dans ce cas. – bobince

+0

A droite, je testais sur un formulaire de méthode GET. –

+0

Merci pour les suggestions ... en effet quand j'ai utilisé 'post' les guillemets doubles ne sont pas supprimés mais je suis toujours coincé d'une manière ou d'une autre pour obtenir une réponse d'objet JSON invalide ... plus de débogage! –

Questions connexes