2010-11-27 9 views
147

Jakie jest najlepsze narzędzie do dekodowania adresów URL JavaScript? Kodowanie również byłoby miłe, a praca z jQuery jest dodatkowym atutem.JavaScript URL Decode function

+35

Czy sprawdzasz 'kodować eURIComponent' i 'decodeURIComponent'? – Gumbo

+0

czy to naprawdę to samo? –

+2

@at: To samo co? – Gumbo

Odpowiedz

209
+1

dzięki! wygląda na właściwą odpowiedź, ale Gumbo odpowiedział na to pierwsze .. Czuję, że zasługuje na kredyt. –

+15

To jest niekompletna odpowiedź. Zobacz poniżej implementację urlDecode() przez @anshuman. –

+2

Miło, ale nie usunęło znaków "+". Odpowiedź @ anshuman działała najlepiej dla mnie – MusikAnimal

224

Powyżej znajduje się pełna funkcja (zaczerpnięte z PHPJS):

function urldecode(str) { 
    return decodeURIComponent((str+'').replace(/\+/g, '%20')); 
} 
+32

+1: jest to prawdziwy kod adresu URL, obsługuje przypadek przestrzeni zakodowanej jako +, bardzo dziękuję – SinistraD

+1

To jest to, co ja potrzebne do użycia, gdy dane zostały zakodowane za pomocą funkcji urlencode() PHP. –

+0

Super przydatne dla mnie i wziął nanosekundę do realizacji. Dzięki! –

9
decodeURIComponent(mystring); 

można przejdzie parametrów za pomocą tego fragmentu kodu:

//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; 
} 

albo to jedna wykładziny Uzyskaj parametry:

location.search.split("your_parameter=")[1] 
+2

Zamiast tego należy użyć 'window.location.search'. – aloisdg

3
//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)); 
+0

Dziękuję, to działało dla mnie. decodeURIComponent nie działał dla mnie (zepsuta sekwencja URI). – Smile4ever

5

Użyj tego

unescape(str); 

Nie jestem wielkim JS programista, próbował wszystko, i to działało niesamowite!

+1

Fajna odpowiedź, ale wygląda na to, że jest [przestarzała] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FFunctions#escape_and_unescape_functions (Obsoleted_above_JavaScript_1.5)) na rzecz 'decodeURIComponent()' z powodu słabej obsługi znaków spoza ASCII. –

1

Jeśli jesteś odpowiedzialny za kodowanie danych w PHP za pomocą kodu urlencode, kodowanie raw kodu PHP działa z dekoderem JavaScript bez konieczności zamiany znaku +.

1

Oto, co kiedyś:

W JavaScript:

var url = "http://www.mynewsfeed.com/articles/index.php?id=17"; 
var encoded_url = encodeURIComponent(url); 

var decoded_url = decodeURIComponent(encoded_url); 

W PHP:

$url = "http://www.mynewsfeed.com/articles/index.php?id=17"; 
$encoded_url = url_encode(url); 

$decoded_url = url_decode($encoded_url); 

Można też spróbować go online tutaj: http://www.mynewsfeed.x10.mx/articles/index.php?id=17