58 votes

Comment passer une URL avec plusieurs paramètres dans une URL ?

Fondamentalement, j'essaie de passer une URL comme celle-ci :

 www.foobar.com/?first=1&second=12&third=5

dans une URL comme celle-ci :

 http://www.facebook.com/sharer.php?&t=FOOBAR&u=http://www.foobar.com/first=12&sec=25&position=2

Il ne reconnaît que le premier paramètre. J'ai le même problème avec le partage LinkedIn et Twitter, donc ça doit être quelque chose que je fais mal.

87voto

Dexter Points 7001

Plutôt que html encoding votre paramètre d'URL, vous devez le URL encode :

 http://www.facebook.com/sharer.php?&t=FOOBAR&u=http%3A%2F%2Fwww.foobar.com%2F%3Ffirst%3D12%26sec%3D25%26position%3D

Vous pouvez le faire facilement dans la plupart des langues - en javascript :

 var encodedParam = encodeURIComponent('www.foobar.com/?first=1&second=12&third=5');
// encodedParam = 'http%3A%2F%2Fwww.foobar.com%2F%3Ffirst%3D12%26sec%3D25%26position%3D'

(il existe également des méthodes équivalentes dans d'autres langues)

11voto

Sean Vieira Points 47080

Il vous manque le ? dans la deuxième URL (en outre, il doit être codé en URL pour être %3F ).

De plus, je pense que les & restants doivent être des URL et non des codes HTML. Remplacez &second=12&third=5 par %26second=12%26third=5 et tout devrait fonctionner.

Cette:

 &u=http://www.foobar.com/first=12&sec=25&position=2

devrait être:

 &u=http://www.foobar.com/%3Ffirst=12%26sec=25%26position=2

2voto

justkt Points 8976

Dans votre exemple, certaines parties de votre URL transmise ne sont pas codées en URL (par exemple, les deux points doivent être %3A, les barres obliques doivent être %2F). Il semble que vous ayez encodé les paramètres dans votre URL de paramètre, mais pas l'URL de paramètre elle-même. Essayez également de l'encoder. Vous pouvez utiliser encodeURIComponent .

2voto

SSL46 Points 29

Dans jQuery, vous pouvez utiliser :

 let myObject = {first:1, second:12, third:5};
jQuery.param(myObject);

Doc : http://api.jquery.com/jquery.param/ La sortie : premier=1&second=12&troisième=5 Cela le formatera, quel que soit votre objet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X