Яка найкраща утиліта декодування URL-адреси JavaScript? Кодування теж було б непогано, і додатковий бонус - робота з jQuery.
Яка найкраща утиліта декодування URL-адреси JavaScript? Кодування теж було б непогано, і додатковий бонус - робота з jQuery.
Відповіді:
Я також використовував encodeURIComponent () і decodeURIComponent () .
Ось повна функція (взята з PHPJS ):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
Використовуй це
unescape(str);
Я не великий програміст JS, пробував все, і це спрацювало приголомшливо!
decodeURIComponent(mystring);
ви можете отримати передані параметри, скориставшись цим бітом коду:
//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;
}
Або цей одноклапник для отримання параметрів:
location.search.split("your_parameter=")[1]
window.location.search
замість цього.
//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));
Якщо ви несете відповідальність за кодування даних у PHP за допомогою urlencode, PHP's rawurlencode працює з JavaScript декодуваннямURIComponent, не потребуючи заміни символу +.
Ось що я використав:
У JavaScript:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
На PHP:
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
Ви також можете спробувати його тут: 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()
це добре, але ви ніколи не хочете використовувати encodeURIComponent()
безпосередньо. Це не може уникнути зарезервовані символи , такі як *
, !
, '
, (
і )
. Перегляньте RFC3986 , де це визначено, для отримання додаткової інформації про це. Документація щодо мережі розробників Mozilla дає як хороше пояснення, так і рішення. Пояснення ...
Щоб бути більш суворим у дотриманні RFC 3986 (який резервує!, ', (,) І *), хоча ці символи не мають формалізованого використання URI, що обмежує використання, можна безпечно використовувати наступне:
Рішення ...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
Якщо ви не впевнені, ознайомтеся з хорошою робочою демонстрацією на JSBin.com . Порівняйте це з поганою робочою демонстрацією на JSBin.com, використовуючи encodeURIComponent()
безпосередньо .
Хороші результати коду:
thing%2athing%20thing%21
Неправильний код encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
іdecodeURIComponent
?