ada*_*dam 16 javascript jquery query-string
假设我有一个网址,例如:
http://www.example.com/hello.png?w=100&h=100&bg=white
Run Code Online (Sandbox Code Playgroud)
我想要做的是更新w和h查询字符串的值,但保持bg查询字符串不变,例如:
http://www.example.com/hello.png?w=200&h=200&bg=white
Run Code Online (Sandbox Code Playgroud)
那么什么是读取查询字符串值的最快最有效的方法(它们可以是任何一组查询字符串值,而不仅仅是w,h和bg),更新一些值或不更新值,并返回完整的URL与新的请求参数?
所以:
dot*_*ree 15
以这种方式获取查询字符串值,并使用$ .param重建查询字符串
更新:
这是一个例子,也检查小提琴:
function getQueryVariable(url, variable) {
var query = url.substring(1);
var vars = query.split('&');
for (var i=0; i<vars.length; i++) {
var pair = vars[i].split('=');
if (pair[0] == variable) {
return pair[1];
}
}
return false;
}
var url = 'http://www.example.com/hello.png?w=100&h=100&bg=white';
var w = getQueryVariable(url, 'w');
var h = getQueryVariable(url, 'h');
var bg = getQueryVariable(url, 'bg');
// http://www.example.com/hello.png?w=200&h=200&bg=white
var params = { 'w':200, 'h':200, 'bg':bg };
var new_url = 'http://www.example.com/hello.png?' + jQuery.param(params);
Run Code Online (Sandbox Code Playgroud)
您可以更改函数以使用当前URL:
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split('&');
for (var i=0; i<vars.length; i++) {
var pair = vars[i].split('=');
if (pair[0] == variable) {
return pair[1];
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
小智 7
//update URL Parameter
function updateURL(key,val){
var url = window.location.href;
var reExp = new RegExp("[\?|\&]"+key + "=[0-9a-zA-Z\_\+\-\|\.\,\;]*");
if(reExp.test(url)) {
// update
var reExp = new RegExp("[\?&]" + key + "=([^&#]*)");
var delimiter = reExp.exec(url)[0].charAt(0);
url = url.replace(reExp, delimiter + key + "=" + val);
} else {
// add
var newParam = key + "=" + val;
if(!url.indexOf('?')){url += '?';}
if(url.indexOf('#') > -1){
var urlparts = url.split('#');
url = urlparts[0] + "&" + newParam + (urlparts[1] ? "#" +urlparts[1] : '');
} else {
url += "&" + newParam;
}
}
window.history.pushState(null, document.title, url);
}
Run Code Online (Sandbox Code Playgroud)
简单的解决方案
您可以使用如下所示的URLSearchParams.set():
var currentUrl = 'http://www.example.com/hello.png?w=100&h=100&bg=white';
var url = new URL(currentUrl);
url.searchParams.set("w", "200"); // setting your param
var newUrl = url.href;
console.log(newUrl);
Run Code Online (Sandbox Code Playgroud)
我最喜欢阿里的回答。我将代码清理成一个函数,并认为我会分享它以使其他人的生活更轻松。希望这可以帮助某人。
function addParam(currentUrl,key,val) {
var url = new URL(currentUrl);
url.searchParams.set(key, val);
return url.href;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46319 次 |
最近记录: |