[英]& and # not recognized in getting values from queryString
我正在尝试从此url获取查询和过滤器值:
http://xyz/search.page?query=apple&filter=all
使用此功能:
getParameters: function(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(([^&#]*)=|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(unescape(results[2].replace(/\+/g, " ")));
}
它将为此返回query = apple,但是如果我们具有apple#或apple&之类的值,它将不考虑那些特殊字符,它将仍然返回apple。 但是对于所有其他特殊字符(如!,@,*),它将返回apple! 或apple @等。有人可以帮助我获得#和&的正确结果,也请提前谢谢。
如果可能的话,最好使用浏览器的解析器,除非您在NodeJS中运行。
这是功能的快速实现:
function getParameters(name, url) { var parser = document.createElement('a'); parser.href = url; var vars = parser.search.split('&'); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split('='); if (decodeURIComponent(pair[0]) == name) { return decodeURIComponent(pair[1]); } } return null; } console.log(getParameters("filter", "http://xyz/search.page?query=apple&filter=all"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.