148

次のような URL にパラメーターを渡そうとしています。

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

そして、別の API によって生成された画像 URL などのパラメーターを渡したいのですが、画像のリンクは次のようになります。

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

ただし、URL を使用しようとすると:

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

うまくいきません。

encodeURI()また、imageURL でandを使用してみencodeURIComponent()ましたが、これも機能しません。

4

4 に答える 4

201

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/

于 2011-11-15T10:53:55.710 に答える
57

new 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))

于 2018-05-11T09:01:05.350 に答える