Как передать URL с несколькими параметрами в URL?
В основном я пытаюсь передать такой 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, так что это должно быть то, что я делаю неправильно.
Ответы
Ответ 1
Вместо html encoding
вашего параметра URL вам нужно 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
Вы можете сделать это легко на большинстве языков - в 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'
(есть эквивалентные методы и на других языках)
Ответ 2
Во втором 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
Ответ 3
В jQuery вы можете использовать:
var myObject = {first:1, second=12, third=5};
jQuery.param();
Doc: http://api.jquery.com/jquery.param/
Выход: первый = 1 & второй = 12 & третий = 5
Это отформатирует его, независимо от вашего объекта.
Ответ 4
В вашем примере части вашего переданного URL не кодируются URL (например, двоеточие должно быть% 3A, передние косые черты должны быть% 2F). Похоже, вы закодировали параметры по URL-адресу параметра, но не по самому URL-адресу параметра. Попробуйте также кодировать его. Вы можете использовать encodeURIComponent
.
Ответ 5
Вам нужно избежать символа и. Поверните
&
в
&
и вам должно быть хорошо.