Was ist das beste Dienstprogramm zum Dekodieren von JavaScript-URLs? Das Codieren wäre auch schön und eine gute Zusammenarbeit mit jQuery ist ein zusätzlicher Bonus.
Was ist das beste Dienstprogramm zum Dekodieren von JavaScript-URLs? Das Codieren wäre auch schön und eine gute Zusammenarbeit mit jQuery ist ein zusätzlicher Bonus.
Antworten:
Ich habe auch encodeURIComponent () und decodeURIComponent () verwendet .
Hier ist eine vollständige Funktion (aus PHPJS entnommen ):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
Benutze das
unescape(str);
Ich bin kein großartiger JS-Programmierer, habe alles versucht und das hat super funktioniert!
decodeURIComponent(mystring);
Mit diesem Code können Sie übergebene Parameter abrufen:
//parse URL to get values: var i = getUrlVars()["i"];
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
Oder dieser Einzeiler, um die Parameter zu erhalten:
location.search.split("your_parameter=")[1]
window.location.search
stattdessen verwenden.
//How decodeURIComponent Works
function proURIDecoder(val)
{
val=val.replace(/\+/g, '%20');
var str=val.split("%");
var cval=str[0];
for (var i=1;i<str.length;i++)
{
cval+=String.fromCharCode(parseInt(str[i].substring(0,2),16))+str[i].substring(2);
}
return cval;
}
document.write(proURIDecoder(window.location.href));
Wenn Sie für die Codierung der Daten in PHP mit Urlencode verantwortlich sind, funktioniert der Rawurlencode von PHP mit der decodeURIComponent von JavaScript, ohne dass das Zeichen + ersetzt werden muss.
Folgendes habe ich verwendet:
In JavaScript:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
In PHP:
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
Sie können es auch online hier ausprobieren: http://www.mynewsfeed.x10.mx/articles/index.php?id=17
var uri = "my test.asp?name=ståle&car=saab";
console.log(encodeURI(uri));
decodeURIComponent()
ist in Ordnung, aber Sie wollen nie encodeURIComponent()
direkt verwenden. Dies scheitert reservierte Zeichen zu entkommen wie *
, !
, '
, (
, und )
. Weitere Informationen hierzu finden Sie in RFC3986 , wo dies definiert ist. Die Dokumentation zum Mozilla Developer Network bietet sowohl eine gute Erklärung als auch eine Lösung. Erläuterung...
Um bei der Einhaltung von RFC 3986 (das reserviert !, ', (,) Und *) strenger zu sein, kann Folgendes sicher verwendet werden, obwohl diese Zeichen keine formalisierten URI-Begrenzungsverwendungen haben:
Lösung...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
Wenn Sie sich nicht sicher sind, sehen Sie sich eine gute, funktionierende Demo auf JSBin.com an . Vergleichen Sie dies mit einer schlechten, funktionierenden Demo bei JSBin.com, die encodeURIComponent()
direkt verwendet wird .
Gute Codeergebnisse:
thing%2athing%20thing%21
Schlechter Code resultiert aus encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
unddecodeURIComponent
?