Как декодировать русские GET-параметры?
Стоит задача выставить селекторы и значения полей, соответственно принятых GET-параметров. С цифровыми значениями порядок. А вот со строковыми значениями беда - при установке селектора в значение "Да", в GET-параметре оказывается "%C4%E0" и селектор не выставляется. Функция decodeURI и decodeURIComponent к window.location выдают ошибку: "malformed URI sequence".
string = new String(window.location);
get_s = string.split("?")[1].split("&");
var get_vars = [];
var get_vals = [];
for(i = 0; i < get_s.length; i++){
get_vars[i] = get_s[i].split("=")[0];
get_vals[i] = get_s[i].split("=")[1];
if(get_vars[i].match(/^to_param_|^from_param_/)){
$('input[name = '+ get_vars[i] +']').val(get_vals[i]);
}
if(get_vars[i].match(/^select_param_/)){
$('select[name = ' + get_vars[i] + ']').val(get_vals[i]);
}
}
|
Если код в php стоит то можешь urlencode обработать, а полученный url в js передать
|
Цитата:
|
Решено следующим кодом:
var trans=[];
var snart=[];
for(var i=0x410;i<=0x44F;i++){
trans[i]=i-0x350;
snart[i-0x350] = i;
}
trans[0x401]= 0xA8;
trans[0x451]= 0xB8;
snart[0xA8] = 0x401;
snart[0xB8] = 0x451;
window.urlencode = function(str){
var ret=[];
for(var i=0;i<str.length;i++){
var n=str.charCodeAt(i);
if(typeof trans[n]!='undefined')
n = trans[n];
if (n <= 0xFF)
ret.push(n);
}
return window.escape(String.fromCharCode.apply(null,ret));
}
window.urldecode = function(str){
var ret=[];
str = unescape(str);
for(var i=0;i<str.length;i++){
var n=str.charCodeAt(i);
if(typeof snart[n]!='undefined') n = snart[n];
ret.push(n);
}
return String.fromCharCode.apply(null,ret);
}
|
| Часовой пояс GMT +3, время: 05:15. |