En gros, j'essaie de passer une URL comme ceci:
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. Je rencontre le même problème avec le partage sur LinkedIn et Twitter, alors ce doit être quelque chose que je fais mal.
Plutôt que html encoding
votre paramètre d'URL, vous devez URL encode
il:
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 aussi des méthodes équivalentes dans d'autres langues)
Il vous manque le ?
Dans la deuxième URL (il devrait également être codé en tant qu'URL pour être %3F
).
De plus, je crois que le &
Restant doit être une URL, pas un code HTML. Changez &second=12&third=5
En %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
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: first = 1 & second = 12 & third = 5 Ceci le formatera, quel que soit votre objet.
Dans votre exemple, certaines parties de votre URL transmise ne sont pas encodées (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 dans l'URL de paramètre elle-même. Essayez aussi de l'encoder. Vous pouvez utiliser encodeURIComponent
.
Je vois que vous avez des problèmes avec les liens de partage social. J'ai eu un problème similaire à un moment donné et j'ai trouvé cette question, mais je ne vois pas de réponse complète à cette question. J'espère que ma résolution javascript ci-dessous aidera:
J'avais des liens de partage par défaut à modifier pour que l'URL partagée comporte des paramètres UTM supplémentaires concaténés.
Mon exemple sera pour le lien de partage social Facebook, mais cela fonctionne pour tous les liens de réseau de partage social possibles:
L'URL à partager était:
https://mywebsitesite.com/blog/post-name
Le lien de partage par défaut ressemblait à:
$facebook_default = "https://www.facebook.com/sharer.php?u=https%3A%2F%2mywebsitesite.com%2Fblog%2Fpost-name%2F&t=hello"
Je l'ai d'abord décodé:
console.log( decodeURIComponent($facebook_default) );
=>
https://www.facebook.com/sharer.php?u=https://mywebsitesite.com/blog/post-name/&t=hello
Ensuite, j'ai remplacé l'URL par la nouvelle URL codée (avec les paramètres UTM concaténés):
console.log( decodeURIComponent($facebook_default).replace( window.location.href, encodeURIComponent(window.location.href+'?utm_medium=social&utm_source=facebook')) );
=>
https://www.facebook.com/sharer.php?u=https%3A%2F%mywebsitesite.com%2Fblog%2Fpost-name%2F%3Futm_medium%3Dsocial%26utm_source%3Dfacebook&t=2018
C'est ça!
Solution complète:
$ facebook_default = $ ('a.facebook_default_link'). attr ('href');
$ ('a.facebook_default_link'). attr ('href', decodeURIComponent ($ facebook_default) .replace (window.location.href, encodeURIComponent (window.location.href + '? utm_medium = social & utm_source = facebook'));