Ich versuche, Parameter an eine URL zu übergeben, die folgendermaßen aussieht:
http://www.foobar.com/foo?imageurl=
Und ich möchte die Parameter wie eine Bild-URL übergeben, die von einer anderen API selbst generiert wird, und der Link für das Bild stellt sich wie folgt heraus:
http://www.image.com/?username=unknown&password=unknown
Wenn ich jedoch versuche, die URL zu verwenden:
http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown
Es funktioniert nicht.
Ich habe auch versucht mit encodeURI()
und encodeURIComponent()
auf dem imageURL, und das auch nicht funktioniert.
javascript
url
encodeuricomponent
Apoorv Saxena
quelle
quelle
Antworten:
Mit PHP
Ergebnis
Mit Javascript:
DEMO: http://jsfiddle.net/Lpv53/
quelle
Mit dem neuen ES6
Object.entries()
sorgt es für ein lustiges kleines verschachteltesmap
/join
:quelle
Sie sollten nicht verwenden
encodeURIComponent()
oderencodeURI()
. Sie solltenfixedEncodeURIComponent()
undfixedEncodeURI()
gemäß der MDN-Dokumentation verwenden.In Bezug auf
encodeURI()
...In Bezug auf
encodeURIComponent()
...Was ist der Unterschied?
fixedEncodeURI()
undfixedEncodeURIComponent()
konvertieren Sie den gleichen Satz von Werten,fixedEncodeURIComponent()
konvertieren Sie aber auch diesen Satz :+@?=:*#;,$&
. Dieser Satz wird in verwendetGET
Parameter (&
,+
usw.), Anker - Tags (#
), Wildcard - Tags (*
), E - Mail / Benutzername Teile (@
), etc ..Beispiel: Wenn Sie verwenden
encodeURI()
,[email protected]/?email=me@home
wird die Sekunde nicht ordnungsgemäß@
an den Server gesendet, außer wenn Ihr Browser die Kompatibilität übernimmt (wie Chrome dies natürlich häufig tut).quelle
"except for your browser handling the compatibility"
?site.com?formula=a+b=c
beim Produzieren gearbeitetformula=>a+b=c
wird, verstößt dies gegen die Spezifikation, aber wenn es funktioniert, liegt es daran, dass Chrome / etc. kann den Spezifikationsfehler der URL usw. erkennen und so weiter, w /[email protected][email protected]
.