Ich habe gerade etwas mit AJAX getestet und das habe ich bei Erfolg gefunden, wenn ich
alarmiere %Vor%oder
%Vor%Der Browser meldet sich mit dem folgenden Code aus.
%Vor% Wenn ich eine andere Zeichenfolge verwende, funktioniert es gut.
Ist es etwas, das ich vermisst habe?
Chrome rastet beim Versuch von der Konsole aus ein. Es gibt einen URIError: URI ist fehlerhaft. Das% ist ein Escape-Zeichen, es kann nicht allein sein.
Der Punkt ist, dass wenn Sie single %
verwenden, es die Logik von decodeURIComponent()
function bricht, da es einen zweistelligen Datenwert erwartet, direkt gefolgt von ihm, zB %20
(Leerzeichen).
Es gibt einen Hack herum. Wir müssen zuerst überprüfen, ob decodeURIComponent()
tatsächlich auf einer gegebenen Zeichenfolge ausgeführt werden kann und die Zeichenfolge andernfalls nicht zurückgibt.
Beispiel:
%Vor%Running:
%Vor% führt zu Uncaught URIError: URI malformed
Fehler
während:
%Vor%gibt die ursprüngliche Zeichenfolge zurück.
Falls Sie einen festen / richtigen URI haben möchten und %
in %25
umgewandelt haben, müssen Sie 1
als zusätzlichen Parameter an die benutzerdefinierte Funktion übergeben:
Das Problem hier ist, dass Sie versuchen, das %
zu entschlüsseln. Dies ist keine gültige codierte Zeichenfolge. Ich denke, Sie möchten encodieren stattdessen die %
.
Die Endlosschleife oder das Lock-up kann auf einen Bug in jquery zurückzuführen sein.
Sie können einen Haltepunkt in jQuery an einem Punkt setzen, der wahrscheinlich den 'Lock-up' verursacht.
Die Dekodierung ist nicht sinnvoll, wenn nur %
bereitgestellt wird, da auf percent-encoding
alphanumerische Zeichen folgen, die auf ein bestimmtes Zeichen in der ASCII-Tabelle verweisen und normalerweise einen URIError in Opera, Chrome, FF ergeben.
Verwenden Sie den integrierten Browser in der Funktion encodeURI
, wenn Sie nach der 'url-codierten' Notation des Prozentzeichens suchen:
Tags und Links javascript decodeuricomponent