jQuery urlencode/decode исправляет справку

Я использую этот jQuery urlencode и urldecode плагин - очень простой и легкий для использования, но он не делает в его исходной форме, удалить + от строки. Один комментарий к домашней странице предлагает патч, но я не знаю, как реализовать его. Кто-либо может выручить меня?

Страница: http://www.digitalbart.com/jquery-and-urlencode/

//URL Encode/Decode
$.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();
var r=/(^[a-zA-Z0-9_.]*)/;
  while(x1 && m[1]!=''){o+=m[1];x+=m[1].length;
    }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
    o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;},
URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/;
  while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){
  b=parseInt(m[1].substr(1),16);
  t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;}
});

Предложенный Патч:

function dummy_url_decode(url) {
// fixed -- + char decodes to space char
var o = url;
var binVal, t, b;
var r = /(%[^%]{2}|\+)/;
while ((m = r.exec(o)) != null && m.length > 1 && m[1] != '') {
if (m[1] == '+') {
t = ' ';
} else {
b = parseInt(m[1].substr(1), 16);
t = String.fromCharCode(b);
}
o = o.replace(m[1], t);
}
return o;
}

Спасибо!

6
задан jay 29 March 2010 в 18:32
поделиться

1 ответ

Не используйте этот плагин вообще, он бессмысленен. Javascript уже поддерживает кодирование и декодирование URL с помощью встроенных функций (encodeURIComponent и decodeURIComponent). Пробелы кодируются как %20 с помощью этого механизма.

Если ваш код на стороне сервера ставит знаки плюс вместо пробелов, вы можете избавиться от них с помощью простой замены regex, поскольку не будет никаких "настоящих" знаков плюс, о которых нужно беспокоиться (они кодируются как %2B):

var decoded = decodeURIComponent(encoded.replace(/\+/g, '%20'));
34
ответ дан 8 December 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: