Как кодировать параметры URL?


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

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

и я хочу передать параметры suchas и 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 72

2 ответа:

С 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/

использование нового объекта ES-8.записи (), это делает для забавной маленькой вложенной карты / 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))