我正在尝试将数据从一页传递到另一页。
www.mints.com?name=something
如何name
使用 JavaScript阅读?
我正在尝试将数据从一页传递到另一页。
www.mints.com?name=something
如何name
使用 JavaScript阅读?
在使用像下面这样的自定义解析函数或 3rd 方库之前,请参阅这个,更当前的解决方案。
下面的代码有效并且在URLSearchParams
不可用的情况下仍然有用,但它是在 JavaScript 中没有可用的本机解决方案的时候编写的。在现代浏览器或 Node.js 中,更喜欢使用内置功能。
function parseURLParams(url) {
var queryStart = url.indexOf("?") + 1,
queryEnd = url.indexOf("#") + 1 || url.length + 1,
query = url.slice(queryStart, queryEnd - 1),
pairs = query.replace(/\+/g, " ").split("&"),
parms = {}, i, n, v, nv;
if (query === url || query === "") return;
for (i = 0; i < pairs.length; i++) {
nv = pairs[i].split("=", 2);
n = decodeURIComponent(nv[0]);
v = decodeURIComponent(nv[1]);
if (!parms.hasOwnProperty(n)) parms[n] = [];
parms[n].push(nv.length === 2 ? v : null);
}
return parms;
}
使用方法如下:
var urlString = "http://www.example.com/bar?a=a+a&b%20b=b&c=1&c=2&d#hash";
urlParams = parseURLParams(urlString);
它返回一个像这样的对象:
{
"a" : ["a a"], /* param values are always returned as arrays */
"b b": ["b"], /* param names can have special chars as well */
"c" : ["1", "2"] /* an URL param can occur multiple times! */
"d" : [null] /* parameters without values are set to null */
}
所以
parseURLParams("www.mints.com?name=something")
给
{name: ["something"]}
编辑:此答案的原始版本使用基于正则表达式的 URL 解析方法。它使用了一个较短的函数,但该方法有缺陷,我用适当的解析器替换了它。
现在是 2019 年,不需要任何手写解决方案或第三方库。如果要在浏览器中解析当前页面的 URL:
# running on https://www.example.com?name=n1&name=n2
let params = new URLSearchParams(location.search);
params.get('name') # => "n1"
params.getAll('name') # => ["n1", "n2"]
如果要在浏览器或 Node.js 中解析随机 URL:
let url = 'https://www.example.com?name=n1&name=n2';
let params = (new URL(url)).searchParams;
params.get('name') # => "n1"
params.getAll('name') # => ["n1", "n2"]
它利用了现代浏览器附带的URLSearchParams接口。
我认为这也应该有效:
function $_GET(q,s) {
s = (s) ? s : window.location.search;
var re = new RegExp('&'+q+'=([^&]*)','i');
return (s=s.replace(/^\?/,'&').match(re)) ?s=s[1] :s='';
}
就这样称呼它:
var value = $_GET('myvariable');
试试这个方法
var url_string = window.location;
var url = new URL(url_string);
var name = url.searchParams.get("name");
var tvid = url.searchParams.get("id");
这是一种解决方案。当然,这个函数不需要加载到“window.params”选项中——可以自定义。
window.params = function(){
var params = {};
var param_array = window.location.href.split('?')[1].split('&');
for(var i in param_array){
x = param_array[i].split('=');
params[x[0]] = x[1];
}
return params;
}();
http://www.mints.com/myurl.html?name=something&goal=true上的示例 API 调用:
if(window.params.name == 'something') doStuff();
else if( window.params.goal == 'true') shoutGOOOOOAAALLL();