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