我想从URL查询字符串中获取数据并将其显示在HTML文档的正文中。我无法让脚本用空格替换+符号。
示例网址:www.mywebsite.com/?item=Sandwich&bread=White+Bread
在HTML正文中,item的文本字段将显示“Sandwich”,但面包的文本字段将显示“White + Bread”。如何用空格替换+?
这是我用来从URL获取值的函数
function querystring(key) {
var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
var r=[], m;
while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
return r;
}
$("span.item").text(querystring('item'));
$("span.bread").text(querystring('bread'));
我尝试过使用它,但它告诉我数组没有替换函数。
.replace(/\+/g, ' ')
答案 0 :(得分:3)
你的函数返回一个数组,试着改变它:
function querystring(key) {
var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
var r=[], m;
while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
return r[0];
}
然后你可以使用你的替换
.replace(/\+/g, ' ')
答案 1 :(得分:0)
我会用这样的东西替换你的函数,为了便于阅读,摆脱正则表达式。它处理未定义的键/值,此外,您可以轻松地将其第一部分重构为parseQueryString函数,返回当前document.location.search
的字典。
function querystring(key) {
var hash = {};
var pairs = document.location.search.substr(1).split('&');
for(var i = 0; i < pairs.length; i++) {
var tuple = pairs[i].split('=');
hash[tuple[0]] = tuple[1];
}
var val = hash[key];
return (val) ? val.replace(/\+/g, ' ') : undefined;
}
用法:
querystring('bread');
> White Bread