如何将包含多个参数的URL传递到URL?

Dor*_*ord 47 html javascript query-parameters

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

www.foobar.com/?first=1&second=12&third=5
Run Code Online (Sandbox Code Playgroud)

进入这样的URL:

http://www.facebook.com/sharer.php?&t=FOOBAR&u=http://www.foobar.com/first=12&sec=25&position=2
Run Code Online (Sandbox Code Playgroud)

它只识别第一个参数.我在LinkedIn和Twitter分享方面遇到同样的问题,所以一定是我做错了.

Dex*_*ter 76

而不是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
Run Code Online (Sandbox Code Playgroud)

您可以在大多数语言轻松完成此操作 - 在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'
Run Code Online (Sandbox Code Playgroud)

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


Sea*_*ira 9

你错过了?第二个URL(另外,它应该是URL编码%3F).

另外,我认为剩下的&需要是URL,而不是HTML编码.更改&second=12&third=5%26second=12%26third=5,一切都应该只是工作.

这个:

&u=http://www.foobar.com/first=12&sec=25&position=2
Run Code Online (Sandbox Code Playgroud)

应该:

&u=http://www.foobar.com/%3Ffirst=12%26sec=25%26position=2
Run Code Online (Sandbox Code Playgroud)

  • @Ferdinand - 我想你想要`encodeURIComponent`,它编码所有的URL字符.`encodeURI`不对以下字符进行编码:和/. (2认同)