【问题标题】:Dynamic links with JavaScript使用 JavaScript 的动态链接
【发布时间】:2014-02-01 13:52:28
【问题描述】:

这是我的问题。我有一个 JSP。我想用 Javascript 动态创建一个超链接。我想在 HTML 中添加来自 input 的文本,并使用它在我的 URL 中将其作为参数传递:

<form name="test">
<P>Enter search: <input type="text" name="searchName"><BR><BR>
<input type="Button" Value="" onclick="location.href='search.jsp?typeOfSearch=" + JavaScriptFunction( that returns the String from searchName ) ' " >
</P>
</FORM>

我似乎无法将 JS 函数添加到“onclick”字符串。我已经尝试使用锚点的 HREF,但我无法使其工作。而且我也尝试过像这样放置一个 JS 函数:

<a href="MyJSfunction( that returns the entire URL ) " >  hyperlink</a> 

而且它也不起作用。我已经尝试过一百万种不同的东西,但我仍然无法将动态参数从一个 JSP 传递到另一个。

任何帮助都会非常好! ...

【问题讨论】:

  • typeOfSeach= 后面的双引号会关闭您的 onclick 属性。那将需要是一个单引号。您的函数调用后有一个额外的单引号,应将其删除。要在 onclick 属性上正确引用引号,您需要:onclick="location.href='search.jsp?typeOfSearch='+SomeFunction(someParameter)"

标签: javascript jsp url dynamic


【解决方案1】:

无需 JavaScript。只需设置您的表单方法和操作,使用提交按钮,然后重命名您的输入字段:

<form name="test" method="GET" action="search.jsp">
    <p>
        Enter search: <input type="text" name="typeOfSearch" /><br/><br/>
        <input type="Submit" Value="Go" />
    </p>
</form>

编辑: 但是,如果您只是好奇如何使用 JavaScript 来实现,那么表单元素都有一个 form 属性。可以通过名称从表单访问表单元素。因此,您可以使用this.form.searchName.value 以与您的按钮相同的形式获取searchName 字段的值:

<input type="Button" Value=""
    onclick="location.href='search.jsp?typeOfSearch=' + this.form.searchName.value;" />

编辑:您当前的代码遇到的问题可能是因为您的引号错误。将typeOfSearch=" 末尾的双引号改为单引号:typeOfSearch='。删除函数调用后的单引号:

<input type="Button" value=""
    onclick="location.href='search.jsp?typeOfSearch=' + JavaScriptFunction()" />

【讨论】:

  • 我尝试了两种方法:“this.form.searchName.value”和 JavaScript 函数。第一个有效,第二个无效。如果您对为什么第二个不起作用有任何想法,我会很感激。但无论如何,非常感谢。第一个确实有效,但我在完成这项工作时遇到了很多麻烦。
  • @user3258537 - 两种 JavaScript 方式中的任何一种都不稳定。使用非 JavaScript 方式。如果你的 JavaScript 函数不工作,如果没有看到实际的函数代码,我不知道为什么。
  • 好的!我现在开始工作了。我在我的 JS 函数上犯了一个错误......再次感谢。
【解决方案2】:

如果您不太关心安全性,一个简单的 HTML 表单应该可以工作。

<form action="Your URL Here">
    <input type="text" value="" name="search" />
    <input type="submit" value="search" />
</form>

http://jsfiddle.net/harveyramer/VfuT4/

【讨论】:

  • 安全风险是什么?或者,使用 JavaScript 如何提高安全性?
  • 我想如果你关心安全,你会使用 post 而不是 get。在这种情况下,您需要在表单中添加 method="post" 属性。
  • 我并不是真正的安全问题专家,也不是任何类型的专家……但现在我并不担心安全问题。我很高兴它有效。
  • 哦,我明白了。那么“post”和“get”之间的最大区别是什么?我是这方面的新手……
  • Post 不会在位置查询字符串中显示有效负载。 w3schools.com/tags/ref_httpmethods.asp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 2012-06-19
相关资源
最近更新 更多