从查询字符串中获取参数不起作用...Javascript

4
我必须编写一个大学项目的Web应用程序。这是类似于使用JSP、Javascript、Java、JQuery和SQL的日历。目前我已经完成了很多,但是在查询字符串方面存在问题。我试图将所点击单元格的ID传递到另一个页面,在该页面中查找具有该ID的条目。我通过查询字符串传递此ID,但无法获取它。我尝试了所有可以获得参数的微小代码片段,但没有成功。下面是我的最新尝试:
    var i = location.search.split('i=')[1];

为了测试参数是否已经被剪切,我尝试了以下方法,但并未成功...
    var x = document.getElementById("vname");
    x.setAttribute("value",i);

vname是表单中一个输入字段的id。感谢您的帮助 :) 编辑:我的ID不只是整数,它像这样“fr21”,代表星期五21:00。

我已经尝试了你推荐的所有方法,但它们都没用。如果我在Firefox上使用Firebug,它会说:“ReferenceError: functionxyz未定义”,尽管它确实被定义了......不知道该怎么办。


如果你在控制台中记录 i 的值,你会得到什么? - Ilya
<input> DOM元素节点的“value”设置为x.value = i;即可。 - Pointy
查询字符串是如何设置的? - guest271314
(at)Ilya:不知道如何记录日志:(.... (at)Pointy:我也试过了,也不起作用 (at)guest271314:它是“site.jsp?i=”+ident”,其中ident是所点击单元格的ID - Musti
可能是如何在JavaScript中获取查询字符串值?的重复问题。 - WhiteHat
1个回答

1

使用类似于split('i=')的方法并不是很健壮。最好使用正则表达式并过滤特定的查询字符串值,例如

<script>
  var matches = location.href.match(/&?i=(\w+)&?/);

  if (matches !== null)
  {
    var id = matches[1];

    alert(id);
  }
</script>

这种方法的优点是支持多个查询字符串参数。因此,当使用类似于abc=d&i=123&g=h的查询字符串时,脚本将返回123编辑 /&?i=(\w+)&?/表示: /开始正则表达式 &?匹配可选的&字符 i= i= (开始捕获组,稍后使用matches[1]读取值 \w匹配所有字符A-Z、a-z、0-9和_ )关闭捕获组 &?匹配可选的&字符 /结束正则表达式

1
我不太清楚你在括号里写的是什么意思 (/i=(\w+&/))。 - Musti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接