2016-07-07 82 views
-1

ich diese und weitere Artikel gelesen haben:Fest Javascript kodieren uri

When are you supposed to use escape instead of encodeURI/encodeURIComponent?

Noch habe ich keine feste Encoder/Decoder uri Lösung gefunden.

Lassen Sie uns sagen, ich habe diese Variablen

var first = 'Hello&and'; 
var second = "Let's have cite"; 
var third = 'And "hash,.#$'; 
var fourth = 'åäö other strange chars'; 

Eine unverschlüsselte URL wäre:

var url 'http://example.com/?first=' + first + '&second=' + second + '&third=' + third + '&fourth=' + fourth; 

Später sollte es in einer Ajax-Anforderung wie:

xhr = new XMLHttpRequest(); 
xhr.open('POST', url); 

I versuchte dies:

var url 'http://example.com/?first=' + encodeURIComponent(first); 

Aber es funktioniert nicht mit #. Was ist eine solide Kodierungslösung für alle Charaktere?

Ich benutze nicht jQuery, nur Javascript.

+0

Wie ich verstehe 'encodeURIComponent' ist für params .. Und die' encodeURI' ist für die URL ... http://i.imgur.com/2xKpYd0.png In Ihrem Fall sollte die '#' 'encodeURIComponent verwenden '(% 23) Wenn du sagst, dass es nicht funktioniert, was meinst du? – Pogrindis

+0

Sie müssen etwas genauer darüber sein, was "nicht mit' # '" funktioniert: 'encodeURIComponent ('And" hash,. # $') '→' "Und% 20% 22hash% 2C.% 23% 24 "'. – deceze

+0

Haben Sie versucht, 'escape()' zu verwenden? –

Antwort

2

Verwenden Sie die bei der Codierung von URI-Parametern. Wenn Sie einen Hashtag mit dieser Funktion codieren, wird die Zeichenfolge "% 23" angezeigt.

So in Ihrem Beispiel:

var first = 'Hello&and'; 
var second = "Let's have cite"; 
var third = 'And "hash,.#$'; 
var fourth = 'åäö other strange chars'; 
var url = 'http://example.com/?first=' + encodeURIComponent(first) + '&second=' + encodeURIComponent(second) + '&third=' + encodeURIComponent(third) + '&fourth=' + encodeURIComponent(fourth); 

Wird in der URL-Variable die Zeichenfolge enthält, zur Folge haben:

http://example.com/?first=Hello%26and&second=Let's%20have%20cite&third=And%20%22hash%2C.%23%24&fourth=%C3%A5%C3%A4%C3%B6%20other%20strange%20chars 

Weitere Informationen der encodeURIComponent Funktion kann here finden.

(Zitat von w3 school) Diese Funktion codiert Sonderzeichen. In zusätzlich codiert es die folgenden Zeichen:, /? : @ & = + $ #

+0

Ist es in jedem Fall mit jedem Eingang fest? Oder ist es zerbrechlich? –

+0

Das W3S Zitat ist schrecklich. "Sonderzeichen zusätzlich zu ". Was ist ein "spezielles" Zeichen? Besseres Angebot MDN: https: //developer.mozilla.org/de-DE/docs/Web/JavaScript/Referenz/Global_Objects/encodeURIComponent – deceze

+1

@Jens Die Funktion ist so konzipiert, dass Sie beliebige Werte als Teil der URL transportieren können. Also, ja, es ist solide. Es sei denn, Sie können das Gegenteil beweisen ... – deceze

-2

Sie können versuchen, escape() Funktion zu verwenden. Das hat mich viele Male gerettet.

escape('#') ergibt %23.

+0

Die Escape- und Unescape-Funktionen sind veraltet. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features – Pogrindis