繁体   English   中英

&和#在从queryString获取值时无法识别

[英]& 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM