給定一個包含絕對URL和字符串參數的字符串,使用JavaScript和/或MooTools替換參數值的最簡單方法是什麼?如何使用mooTools更改查詢字符串的值?
例如
// Change this
'/foo/bar?frob=123456789'
// Into this
'/foo/bar?frob=abcdefg'
編輯
的URL不是當前窗口的location
。它是一個包含字符串的變量。我只是想操縱這個字符串。
給定一個包含絕對URL和字符串參數的字符串,使用JavaScript和/或MooTools替換參數值的最簡單方法是什麼?如何使用mooTools更改查詢字符串的值?
例如
// Change this
'/foo/bar?frob=123456789'
// Into this
'/foo/bar?frob=abcdefg'
編輯
的URL不是當前窗口的location
。它是一個包含字符串的變量。我只是想操縱這個字符串。
對不起,撞到舊的文章,但我認爲它已經在mootools中。無需自己編寫:-) http://mootools.net/docs/more/Types/URI#URI:setData
或者,如果你看一看這裏上一個很老的版本的mootools的:http://pilon.nl/mootools/2009/02/05/extra-browsersextras/
不用道歉,答案是有效的,歡迎! –
如果您想在不重新加載頁面的情況下執行此操作,則無法(這是Web瀏覽器安全模型的一部分)。 如果你不介意重新加載頁面,可以考慮:
location.href='http://example.com/foo/bar?frob=baz'
另一種無需重新加載正在使用的location.hash,即
location.hash = 'myhash'
改變URL來http://example.com/foo/bar?frob=123456789#myhash
這是的基礎Hash bang urls
這是我想出的解決方案。這取決於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);
}
這是特定於我的用法,但它可能作爲未來其他人的出發點。
而且你做了什麼,這可能是更好的,因爲它會延長String
,它在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
很好,非常感謝! –
不錯的答案,簡潔但也包含超過最低限度的信息! –
http://mootools.net/docs/more/Types/String.QueryString雖然如果作爲字符串操作,這是很難與任何圖書館 –