在javascript中从url获取查询字符串

时间:2015-07-27 06:23:45

标签: javascript query-string

我一直在尝试使用javascript从url中获取query string

我正在使用以下代码

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
$(document).ready(function() {
    prodId = getParameterByName('id');
    prodName = getParameterByName('name');
});

适用于http://my_ip/main.html?id=123&name=test

等网址

但是当网址与http://192.168.0.216:1009/main.html#!/video.html?id=123&name=test类似时,它会失败,为prodIDprodName提供空字符串

1 个答案:

答案 0 :(得分:2)

问题是http://192.168.0.216:1009/main.html#!/video.html?id=123&name=test没有location.search部分。它有location.hash - #字符之后的所有内容。

您可以做的简单事情是修改函数以便能够使用location.hash。例如:

function getParameterByName(name, useHash) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location[useHash ? 'hash' : 'search']);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

然后像这样使用它:

var prodId = getParameterByName('id', true); // true - use location.hash for "query parameters"