基本上我正在尝试传递这样的URL:
www.foobar.com/?first=1&second=12&third=5
进入这样的URL:
http://www.facebook.com/sharer.php?&t=FOOBAR&u=http://www.foobar.com/first=12&sec=25&position=2
它只识别第一个参数。我在LinkedIn和Twitter分享方面遇到了同样的问题,所以一定是我做错了。
而不是html encoding
你的URL参数,你需要URL encode
它:
http://www.facebook.com/sharer.php?&t=FOOBAR&u=http%3A%2F%2Fwww.foobar.com%2F%3Ffirst%3D12%26sec%3D25%26position%3D
您可以在大多数语言中轻松完成此操作 - in 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'
(也有其他语言的等效方法)
你错过了第二个URL中的?
(另外,它应该被URL编码为%3F
)。
另外,我认为剩下的&
需要是URL,而不是HTML编码。将&second=12&third=5
改为%26second=12%26third=5
,一切都应该奏效。
这个:
&u=http://www.foobar.com/first=12&sec=25&position=2
应该:
&u=http://www.foobar.com/%3Ffirst=12%26sec=25%26position=2
在您的示例中,传入的URL的部分不是URL编码的(例如,冒号应为%3A,正斜杠应为%2F)。看起来您已将参数编码到参数URL,但不是参数URL本身。尝试编码。你可以使用encodeURIComponent
。
在jQuery中,您可以使用:
let myObject = {first:1, second:12, third:5};
jQuery.param(myObject);
Doc:http://api.jquery.com/jquery.param/输出:first = 1&second = 12&third = 5这将格式化它,无论您的对象包含什么。
我发现你的社交分享链接存在问题。我在某个时候遇到了类似的问题并发现了这个问题,但我没有看到完整的答案。我希望我从下面的javascript解决方案有帮助:
我有默认共享链接需要修改,以便共享的URL将连接其他UTM参数。
我的例子是Facebook社交共享链接,但它适用于所有可能的社交共享网络链接:
需要共享的URL是:
https://mywebsitesite.com/blog/post-name
默认共享链接如下所示:
$facebook_default = "https://www.facebook.com/sharer.php?u=https%3A%2F%2mywebsitesite.com%2Fblog%2Fpost-name%2F&t=hello"
我先解码它:
console.log( decodeURIComponent($facebook_default) );
=>
https://www.facebook.com/sharer.php?u=https://mywebsitesite.com/blog/post-name/&t=hello
然后我用编码的新URL替换了URL(连接了UTM参数):
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
而已!
完整解决方案
$ 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')));
你必须逃避&角色。转动你的
&
成
&
你应该好。