Сообщение от 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() );