How do I pass a URL with multiple parameters into a URL?
Basically I'm trying to pass a URL like this:
www.foobar.com/?first=1&second=12&third=5
into a URL like this:
http://www.facebook.com/sharer.php?&t=FOOBAR&u=http://www.foobar.com/first=12&sec=25&position=2
It only recognizes the first parameter. I'm having the same problem with LinkedIn and Twitter sharing, so it must be something I'm doing wrong.
Solution 1:
Rather than html encoding
your URL parameter, you need to URL encode
it:
http://www.facebook.com/sharer.php?&t=FOOBAR&u=http%3A%2F%2Fwww.foobar.com%2F%3Ffirst%3D12%26sec%3D25%26position%3D
You can do this easily in most languages - 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'
(there are equivalent methods in other languages too)
Solution 2:
You are missing the ?
in the second URL (Also, it should be URL-encoded to be %3F
).
Also, I believe that the remaining &
need to be URL, not HTML-encoded. Change &second=12&third=5
to %26second=12%26third=5
and everything should just work.
This:
&u=http://www.foobar.com/first=12&sec=25&position=2
should be:
&u=http://www.foobar.com/%3Ffirst=12%26sec=25%26position=2
Solution 3:
In your example parts of your passed-in URL are not URL encoded (for example the colon should be %3A, the forward slashes should be %2F). It looks like you have encoded the parameters to your parameter URL, but not the parameter URL itself. Try encoding it as well. You can use encodeURIComponent
.
Solution 4:
In jQuery, you can use:
let myObject = {first:1, second:12, third:5};
jQuery.param(myObject);
Doc: http://api.jquery.com/jquery.param/ The output: first=1&second=12&third=5 This will format it, whatever your object contain.