2010-11-27 1 views
147

Какая утилита для улучшения URL-адреса JavaScript? Кодирование было бы неплохо и хорошо работать с jQuery - дополнительный бонус.Функция JavaScript-декодирования JavaScript

+35

ли вы проверяете 'encod eURIComponent' и 'decodeURIComponent'? – Gumbo

+0

это действительно то же самое? –

+2

@at: То же самое, что и что? – Gumbo

ответ

209

Я использовал encodeURIComponent() и decodeURIComponent() тоже.

+1

спасибо, ребята! выглядит правильным ответом, но Гумбо ответил на это первым. Я чувствую, что он заслуживает кредита. –

+15

Это неполный ответ. См. Реализацию urlDecode() ниже by @anshuman. –

+2

Хороший, но он не удалял знаки «+». Ответ @ anshuman работал лучше всего для меня – MusikAnimal

224

Вот полная функция (из PHPJS):

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

+1: это истинный urldecode, обрабатывает случай пространства, кодируемого как +, большое спасибо – SinistraD

+1

Это то, что я необходимо было использовать, когда данные были закодированы с помощью функции urlencode() PHP. –

+0

Супер полезный для меня и взял наносекунду для реализации. Благодаря! –

9
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] 
+2

Вместо этого вы должны использовать '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

Спасибо, это сработало для меня. decodeURIComponent не работал для меня (последовательность Malformed URI). – Smile4ever

5

Используйте этот

unescape(str); 

Я не большой JS программист, испробовали все, и это работало потрясающе!

+1

Прохладный ответ, но выглядит как [устаревший] (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)) в пользу 'decodeURIComponent()' из-за плохой поддержки символов, отличных от ASCII. –

1

Если вы несете ответственность за кодирование данных на PHP с использованием urlencode, то rawurlencode PHP работает с JavaScript-декодеромURIComponent без необходимости замены символа +.

1

Вот что я использовал:

В 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

 Смежные вопросы

  • Нет связанных вопросов^_^