Javascript 如何使用mooTools更改querystring的值?

Javascript 如何使用mooTools更改querystring的值?,javascript,mootools,query-string,Javascript,Mootools,Query String,给定一个包含带有querystring参数的绝对URL的字符串,使用JavaScript和/或MooTools替换参数值的最简单方法是什么 e、 g 编辑 URL不是当前窗口的位置。它是一个包含字符串的变量。我只想处理这个字符串。如果您想在不重新加载页面的情况下执行此操作,则没有办法(这是web浏览器安全模型的一部分)。 如果您不介意重新加载页面,请考虑: location.href='http://example.com/foo/bar?frob=baz' 另一种无需重新加载的方法是使用lo

给定一个包含带有querystring参数的绝对URL的字符串,使用JavaScript和/或MooTools替换参数值的最简单方法是什么

e、 g

编辑


URL不是当前窗口的
位置。它是一个包含字符串的变量。我只想处理这个字符串。

如果您想在不重新加载页面的情况下执行此操作,则没有办法(这是web浏览器安全模型的一部分)。 如果您不介意重新加载页面,请考虑:

location.href='http://example.com/foo/bar?frob=baz'
另一种无需重新加载的方法是使用location.hash,即

location.hash = 'myhash'
将url更改为


这是

的基础。如果要在不重新加载页面的情况下执行此操作,则没有办法(这是web浏览器安全模型的一部分)。 如果您不介意重新加载页面,请考虑:

location.href='http://example.com/foo/bar?frob=baz'
另一种无需重新加载的方法是使用location.hash,即

location.hash = 'myhash'
将url更改为


这是我提出的解决方案的基础。这取决于MooTools

function replaceUrlParameter (url, parameterName, newValue) {
    var uri = new URI(url);
    var uriBase = ri.get('directory') + uri.get('file');
    var query = uri.get('query').parseQueryString(false, true);
    query[parameterName] = newValue;

    uriBase += '?';
    for (var i in query) {
        if (i === 'undefined') continue;
        if (i === '') continue;
        uriBase += i + '=' + escape(query[i]) + '&';
    }
    return uriBase.substring(0, galleryLinkBase.length - 1);
}

这是特定于我的用法的,但它可能会作为将来其他人的起点。

这是我提出的解决方案。这取决于MOOTOLS

function replaceUrlParameter (url, parameterName, newValue) {
    var uri = new URI(url);
    var uriBase = ri.get('directory') + uri.get('file');
    var query = uri.get('query').parseQueryString(false, true);
    query[parameterName] = newValue;

    uriBase += '?';
    for (var i in query) {
        if (i === 'undefined') continue;
        if (i === '') continue;
        uriBase += i + '=' + escape(query[i]) + '&';
    }
    return uriBase.substring(0, galleryLinkBase.length - 1);
}

这是特定于我的用法的,但它可能会在将来作为其他人的起点。

更进一步,这可能会更好,因为它将扩展
字符串,并删除对URI类的依赖性

(function() {

// deps on Types/String.toQueryString()
String.implement({

    fixQueryString: function(key, value) {
        var query = this.parseQueryString() || {};
        query[key] = value;
        return Object.toQueryString(query);
    }

});

// exports:
this.replaceUrlParameter = function(url, key, value) {
    var parts = url.split('?'), QS = parts[1] || null;

    return QS ? [parts[0], QS.fixQueryString(key, value)].join("?") : url;
};

})();

console.log(replaceUrlParameter('/foo/bar', 'frob', 'ownies'));
/foo/bar/
console.log(replaceUrlParameter('/foo/bar?frob=123123123', 'frob', 'ownies'));
/foo/bar?frob=ownies

更进一步,这可能会更好,因为它将扩展
字符串
,并删除对URI类的依赖性

(function() {

// deps on Types/String.toQueryString()
String.implement({

    fixQueryString: function(key, value) {
        var query = this.parseQueryString() || {};
        query[key] = value;
        return Object.toQueryString(query);
    }

});

// exports:
this.replaceUrlParameter = function(url, key, value) {
    var parts = url.split('?'), QS = parts[1] || null;

    return QS ? [parts[0], QS.fixQueryString(key, value)].join("?") : url;
};

})();

console.log(replaceUrlParameter('/foo/bar', 'frob', 'ownies'));
/foo/bar/
console.log(replaceUrlParameter('/foo/bar?frob=123123123', 'frob', 'ownies'));
/foo/bar?frob=ownies

很抱歉撞到了一篇旧文章,但我想它已经在mootools中了。不需要自己写:-)


或者,如果您使用的是非常旧版本的mootools,请看这里:

很抱歉撞到了一篇旧文章,但我认为它已经在mootools中了。不需要自己写:-)


或者,如果您使用的是非常旧版本的mootools,请看这里:

尽管如果将其作为字符串进行操作,这与任何库都没有关系。尽管如果将其作为字符串进行操作,这与任何库都没有关系。回答很好,简洁,但包含的信息也超过了最低限度!很好的答案,简洁,但也包含了比光秃秃的最少的信息!