58

基本的に私は次のような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の共有で同じ問題が発生しているので、それは私が間違っていることであるに違いありません。

4

6 に答える 6

87

URLパラメータではなく、次のことを行うhtml encoding必要があります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

2番目のURLにがありませ?ん(また、URLエンコードされている必要があります%3F)。

また、残り&はHTMLでエンコードするのではなく、URLである必要があると思います。に変更&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);

Doc:http ://api.jquery.com/jquery.param/ 出力:first = 1&second = 12&third = 5これにより、オブジェクトに含まれるものが何であれ、フォーマットされます。

于 2016-06-02T10:08:32.933 に答える
0

ソーシャル共有リンクに問題があるようです。ある時点で同様の問題が発生し、この質問を見つけましたが、完全な答えはわかりません。以下からの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')));

于 2019-02-26T23:41:30.720 に答える
-7

&文字をエスケープする必要があります。あなたの

&

の中へ

&

そして、あなたは良いはずです。

于 2011-02-23T19:20:34.577 に答える