You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript从URL获取GET变量时返回Null值问题

解决URL查询参数获取返回Null的问题

嘿,我看到你在提取URL查询参数时一直拿到null,咱们来揪出问题根源并解决它~

首先看你的情况:目标URL是http://example.com/page2.html?user%20=admin,你写的正则函数始终返回null,主要有两个关键问题:

问题1:参数名包含空格(URL编码为%20)

你的URL里的参数名是user (末尾带空格,因为%20是空格的URL编码),如果调用函数时传入的是'user'(不带空格),正则自然匹配不到对应的参数,直接返回null。

问题2:正则里的&是HTML转义字符,不符合原始URL格式

window.location.href返回的是原始URL,其中参数分隔符是&,而不是HTML转义后的&,你的正则用[?&]会导致无法正确匹配参数的起始分隔符。


修正后的代码

先把正则里的&换成&,然后根据URL的实际参数名来调用函数:

var getQueryString = function (field, url) {
  var href = url ? url : window.location.href;
  // 把&换成&,同时保留大小写不敏感的匹配
  var reg = new RegExp('[?&]' + field + '=([^&#]*)', 'i');
  var string = reg.exec(href);
  return string ? string[1] : null;
}

// 调用示例:因为参数名是带空格的user,所以传入'user '
console.log(getQueryString('user ', 'http://example.com/page2.html?user%20=admin')); // 输出admin

更规范的优化建议

带空格的参数名其实不太符合URL规范,建议把URL改成http://example.com/page2.html?user=admin(去掉参数名里的空格),这样调用时直接传'user'就能拿到结果:

console.log(getQueryString('user', 'http://example.com/page2.html?user=admin')); // 输出admin

更简单的原生API方案

现在浏览器都支持URLSearchParams原生API,不用自己写正则,更可靠:

// 针对带空格参数的URL
const url = new URL('http://example.com/page2.html?user%20=admin');
console.log(url.searchParams.get('user ')); // 输出admin

// 针对规范的URL
const url2 = new URL('http://example.com/page2.html?user=admin');
console.log(url2.searchParams.get('user')); // 输出admin

内容的提问来源于stack exchange,提问作者samw003801

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:21:20