相对表单操作解析为绝对 URL?

Posted

技术标签:

【中文标题】相对表单操作解析为绝对 URL?【英文标题】:Relative form action resolves to absolute URL? 【发布时间】:2012-09-25 14:31:06 【问题描述】:

我正在尝试获取放置在表单操作中的实际字符串。问题是当我这样做时,即使相对路径在 html 中,action 属性也会解析为绝对路径。如何获取 action 属性中的实际字符串?

这是我所指的示例: http://jsfiddle.net/MSY4s/

【问题讨论】:

【参考方案1】:

如果您已经在使用 jquery,我会使用 .attr 函数,而不是从 jQuery 对象中提取 DOM 元素。像这样:

$("form").attr("action");

这应该给你真正的动作属性。在您提供的示例中,它应该看起来像“/somewhere”。 jFiddle 中的第二个示例将显示完整路径,因为那是 action 属性中的内容。

【讨论】:

好点。有基本的javascript评估它的原因吗? @ianpgall 这是个好问题,我也想知道。我的假设是,这只是该函数的编写方式,以便浏览器知道提交的完整 URL,但是如果有人知道更具体的内容,我非常想知道。 该属性的值与它在原始 HTML 中出现的一样。评估财产的价值。如果您不知道属性和属性之间的区别,那么值得一读。 @ianpgall 不错的发现,很有趣。 Lonesomeday,非常好的信息,谢谢。【参考方案2】:

相对 URL 总是根据当前文档的 URL 解析为绝对 URL。

【讨论】:

不是我,但我假设是因为答案没有直接回答 OP 的问题。他在问如何获取相对URL。您的回答会对该问题或现有答案做出很好的评论。 这与它发生在 Javascript 中的原因无关,尤其是当它可以用jQuery.attrgetAttribute 清楚地检索时。 @Teeg :我同意,我可能应该详细说明而不是发表声明。 @ianpgall :我试图不考虑jQuery @harsha 是的,但在我的另一个答案的评论中,您可以使用 getAttribute 并且不会评估为绝对 URL。正如 lonesomeday 指出的那样,这可能是属性和属性之间的区别。【参考方案3】:

试试这个:

提供两个表单 ID:

<form id="form1" action="/somewhere" method="post">
<input type="text" name="test" />
</form>

<form id="form2" action="https://fiddle.jshell.net/somewhere2" method="post">
<input type="text" name="test" />
</form>​

然后使用这些id就可以得到每个表单的action属性:

$('#form1').attr('action');

$('#form2').attr('action');

您也可以使用相同的标签设置动作属性:

$('#form1').attr('action', '[New Action Value]');

$('#form2').attr('action', '[New Action Value]');

希望这会有所帮助。

【讨论】:

以上是关于相对表单操作解析为绝对 URL?的主要内容,如果未能解决你的问题,请参考以下文章

浏览器解析相对 url,就好像它们是绝对的一样

相对 img src 被解析为绝对...我错过了啥?

解析 JavaScript 中的相对 URL

django url反向解析

绝对路径与相对路径解析

Java Web中相对路径与绝对路径的分析