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

时间:2011-02-23 19:18:11

标签: javascript html query-parameters

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

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分享方面遇到同样的问题,所以一定是我做错了。

6 个答案:

答案 0 :(得分:75)

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

您可以在大多数语言中轻松完成此操作 - 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'

(其他语言也有相同的方法)

答案 1 :(得分:8)

您错过了第二个网址中的?(此外,它应该被网址编码为%3F)。

另外,我认为剩下的&需要是网址,而不是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

答案 2 :(得分:2)

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

答案 3 :(得分: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 无论您的对象包含什么内容,都会对其进行格式化。

答案 4 :(得分: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(连接了UTM参数)替换了该URL:

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',解码URIComponent($ facebook_default).replace(window.location.href,encodeURIComponent(window.location.href +'?utm_medium = social&utm_source = facebook')))) ;

答案 5 :(得分:-5)

你必须逃避&字符。转动你的

&

进入

&

你应该好。