【问题标题】:URL parameters returns nullURL 参数返回 null
【发布时间】:2020-06-30 21:16:38
【问题描述】:

我偶然发现了这个问题,希望我能在这里得到一些关于可能是什么原因的意见。 我有一个带有一些 GET 参数的 URL,如下所示:

www.test.com/test.jsp?serial=Id123:true;Id456:true;Id789:false;&session=1234567&userId=test

然后我提取参数以进行 REST 调用

   const params = new URLSearchParams(window.location.search);
   console.log(window.location.search);
   console.log(params.get("serial"));
   console.log(params.get("session"));
   console.log(params.get("userId"));
   const url = new URL("service/resources/query?", document.baseURI).href;
   fetch(url + params.toString())

我会说一半时间我的 REST 调用会由于会话和 userId 参数被切断而失败。相反,我在浏览器中看到了这个

www.test.com/test.jsp?serial=Id123:true

我的控制台打印出来会显示

?serialNum=ZD0222:True
Id123:True
null
null

关于为什么会发生这种情况以及我如何可以在这里写出不同的任何建议?

附加说明 - 分号可能是这里的原因吗?我注意到 url 只显示第一个参数的第一个值。

【问题讨论】:

  • “由于session和userId参数被截断”在哪里?当从浏览器发送请求(查看您的网络选项卡)或在服务器上接收请求时,它们是否会被切断?因为看起来您向我们展示的内容没有任何问题。我试过了,一切看起来都很好(除了错别字serial/serialNumsession/sessionIdconsole.log
  • 谢谢,我已修正错字。它不会一直发生,但我会说大约 50% 的时间请求被切断。
  • 如何从“网络”选项卡中进行检查?上面的 url 会打开一个新的浏览器,当我可以进入网络选项卡时,我看不到任何东西。

标签: javascript url parameters


【解决方案1】:

我认为您的 window.location.search 不是您所期望的。 当我明确定义 URL 时看起来不错。

const url = new URL("http://www.test.com/test.jsp?serial=Id123:true;Id456:true;Id789:false;&session=1234567&userId=test");
const params = new URLSearchParams(url.search);
console.log(url.search);
console.log(params.get("serialNum"));
console.log(params.get("sessionId"));
console.log(params.get("userId"));

【讨论】:

  • 感谢您的评论。在我的例子中,url 是动态的,所以我不能在那里明确定义。我必须使用 window.location.search 给我当前的网址。它不会一直发生,但我会说至少有 50% 的时间我的 REST 失败是因为参数被切断了。
【解决方案2】:

我会采取另一个方向,也许是这样的

const url = 'http://www.test.com/test.jsp?serial=Id123:true;Id456:true;Id789:false;&session=1234567&userId=test',
  matches = url.match(/([&?](\w*)=([^?&]*))/g),
  res = matches.reduce((acc, el)=> {
    const sub = el.match(/[&?](.*)=(.*)/)
    acc[sub[1]] = sub[2]
    return acc
  }, {})
console.log(res)

请注意:该功能无法处理许多极端情况,但可能会启发您找到一种可接受的方式来获得所需的东西。

【讨论】:

    猜你喜欢
    • 2021-10-22
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多