从 url 在 javascript 中获取查询字符串
Get query string from url in javascript
我一直在尝试使用 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');
});
它适用于 URL 比如 http://my_ip/main.html?id=123&name=test
但是当 URL 类似于 http://192.168.0.216:1009/main.html#!/video.html?id=123&name=test
时它会失败,为 prodID
和 prodName
提供空字符串
问题是 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"
我一直在尝试使用 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');
});
它适用于 URL 比如 http://my_ip/main.html?id=123&name=test
但是当 URL 类似于 http://192.168.0.216:1009/main.html#!/video.html?id=123&name=test
时它会失败,为 prodID
和 prodName
问题是 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"