58

基本上我正在尝试传递这样的 URL:

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

进入这样的网址:

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

它只识别第一个参数。我在使用 LinkedIn 和 Twitter 共享时遇到了同样的问题,所以一定是我做错了。

4

6 回答 6

87

而不是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

您可以在大多数语言中轻松做到这一点 -在 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'

(其他语言也有等效的方法)

于 2011-02-23T19:21:48.137 回答
11

?在第二个 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
于 2011-02-23T19:20:27.223 回答
2

在您的示例中,您传入的 URL 的部分不是 URL 编码的(例如,冒号应该是 %3A,正斜杠应该是 %2F)。看起来您已将参数编码为参数 URL,而不是参数 URL 本身。也尝试对其进行编码。您可以使用encodeURIComponent.

于 2011-02-23T19:21:32.637 回答
2

在 jQuery 中,您可以使用:

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

文档:http ://api.jquery.com/jquery.param/ 输出:first=1&second=12&third=5 这将格式化它,无论您的对象包含什么。

于 2016-06-02T10:08:32.933 回答
0

我了解到您在使用社交分享链接时遇到了问题。我在某个时候遇到了类似的问题并找到了这个问题,但我没有看到完整的答案。我希望我下面的 javascript 解析会有所帮助:

我有需要修改的默认共享链接,以便共享的 URL 将连接额外的 UTM 参数。

我的示例将用于 Facebook 社交分享链接,但它适用于所有可能的社交分享网络链接:

需要分享的网址是:

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')) );

于 2019-02-26T23:41:30.720 回答
-7

您必须转义 & 字符。转动你的

&

进入

&

你应该很好。

于 2011-02-23T19:20:34.577 回答