Как кодировать параметры URL? - PullRequest
94 голосов
/ 15 ноября 2011

Я пытаюсь передать параметры в URL-адрес, который выглядит следующим образом:

http://www.foobar.com/foo?imageurl=

, и я хочу передать параметры, такие как URL-адрес изображения, созданный другим API, и ссылку дляизображение получается как:

http://www.image.com/?username=unknown&password=unknown

Однако, когда я пытаюсь использовать URL:

http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown

, оно не работает ..

Я также пыталсяиспользуя encodeURI и encodeURIComponents для imageURL, и это тоже не работает.

Ответы [ 2 ]

144 голосов
/ 15 ноября 2011

с PHP

echo urlencode("http://www.image.com/?username=unknown&password=unknown");

Результат

http%3A%2F%2Fwww.image.com%2F%3Fusername%3Dunknown%26password%3Dunknown

С Javascript:

var myUrl = "http://www.image.com/?username=unknown&password=unknown";
var encodedURL= "http://www.foobar.com/foo?imageurl=" + encodeURIComponent(myUrl);

ДЕМО: http://jsfiddle.net/Lpv53/

24 голосов
/ 11 мая 2018

Использование нового ES6 Object.entries() делает его забавным маленьким вложенным map / join:

const encodeGetParams = p => 
  Object.entries(p).map(kv => kv.map(encodeURIComponent).join("=")).join("&");

const params = {
  user: "María Rodríguez",
  awesome: true,
  awesomeness: 64,
  "ZOMG+&=*(": "*^%*GMOZ"
};

console.log("https://example.com/endpoint?" + encodeGetParams(params))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...