En iyi JavaScript URL kod çözme yardımcı programı nedir? Kodlama da güzel olurdu ve jQuery ile iyi çalışmak bir avantajdır.
En iyi JavaScript URL kod çözme yardımcı programı nedir? Kodlama da güzel olurdu ve jQuery ile iyi çalışmak bir avantajdır.
Yanıtlar:
Ben de encodeURIComponent () ve decodeURIComponent () kullandım .
İşte tam bir işlev ( PHPJS'den alınmıştır ):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
Bunu kullan
unescape(str);
Ben büyük bir JS programcısı değilim, hepsini denedim ve bu harika çalıştı!
decodeURIComponent(mystring);
bu kod bitini kullanarak parametreleri geçirebilirsiniz:
//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;
}
Veya parametreleri almak için bu tek astar:
location.search.split("your_parameter=")[1]
window.location.search
yerine kullanmalısınız .
//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));
İşte kullandığım:
JavaScript'te:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
PHP dilinde:
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
Burada çevrimiçi olarak da deneyebilirsiniz: 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()
iyidir, ama asla encodeURIComponent()
doğrudan kullanmak istemezsiniz . Bu gibi ayrılmış karakterlerden kurtulmak başarısız *
, !
, '
, (
, ve )
. Check out RFC 3986 bu konuda daha fazla bilgi için, tanımlanır. Mozilla Geliştirici Ağı belgeleri hem iyi bir açıklama hem de bir çözüm sunar. Açıklama ...
RFC 3986'ya (!, ', (,) Ve * ayıran) bağlı kalma konusunda daha katı olmak için, bu karakterlerin resmi URI sınırlayıcı kullanımları olmamasına rağmen, aşağıdakiler güvenle kullanılabilir:
Çözüm...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
Emin değilseniz JSBin.com adresinde iyi çalışan bir demoya göz atın . Doğrudan JSBin.com kötü, çalışan bir demoencodeURIComponent()
ile karşılaştırın .
İyi kod sonuçları:
thing%2athing%20thing%21
Kötü kod sonuçları encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
vedecodeURIComponent
?