Как передать 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 Это будет форматировать его, независимо от того, что содержит ваш объект.


вы должны избежать & характер. Поверни свой

&

на

&

и вы должны быть хорошо.