Показать сообщение отдельно
  #51 (permalink)  
Старый 11.01.2011, 22:28
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от MCTrane
всё уже перепробовал что в голове нашёл
потому что если что-то не работает, надо пытаться понять, почему оно не работает. А не наугад перебирать варианты. Поставь себе regexbuddy и разберись, почему оно не работает

а с подобными форматами лучше поступать по-другому:
function QueryString( v ){
    if( v instanceof Array )
        this._assoc = v;
    else {
        this._assoc = {};
        var pairs = v.substr(1).split('&');
        for( var i=0; i<pairs.length; i++ ){
            var nameValue = pairs[i].split('=');
            this._assoc[ decodeURIComponent(nameValue[0]) ] = decodeURIComponent(nameValue[1]);
        }
    }
}

QueryString.prototype.val = function( n, v ){
    if( arguments.length > 1 )
        this._assoc[n] = v;
    return this._assoc[n];
};

QueryString.prototype.unset = function( n ){
    delete this._assoc[n];
};

QueryString.prototype.toAssoc = function(){
    return this._assoc;
};

QueryString.prototype.toString = function(){
    var r = [];
    for( var k in this._assoc )
        r.push( encodeURIComponent(k)+'='+encodeURIComponent(this._assoc[k]) );
    return '?'+r.join('&');
};

function assocToString( assoc ){
    var r = [];
    for( var k in assoc )
        r.push( "'"+k+"': '"+assoc[k]+"'" );
    return '{'+r.join(',')+'}';
}

var qs = new QueryString('?name1=value1&name2=value2');
alert( assocToString(qs.toAssoc()) );
qs.unset( 'name1' );
alert( assocToString(qs.toAssoc()) );
qs.val( 'name3', 'value3' );
alert( assocToString(qs.toAssoc()) );
qs.val( 'name3', 'value4' );
alert( assocToString(qs.toAssoc()) );
alert( qs.val('name2') );
alert( qs.toString() );
Ответить с цитированием