gpt4 book ai didi

javascript - 如何执行相当于 JSTL 的 c :url in JavaScript?

转载 作者:数据小太阳 更新时间:2023-10-29 05:06:29 26 4
gpt4 key购买 nike

我有一些 JavaScript 正在对相对 URL 进行 Ajax 调用(使用 jQuery)。

var servletUrl = "someservlet";

$.ajax({
type: "POST",
url: servletUrl,
success: function(response) {
// ...
}
});

在哪里"someservlet"是:

@WebServlet("/someservlet")
public class SomeServlet extends HttpServlet

我在多个页面中使用相同的脚本。当从 servlet 上下文根中的页面使用时,相对 url 将相对于 servlet 上下文根进行解析,这是正确的。当从子文件夹中的页面使用时,URL 会相对于子文件夹进行解析,这将返回 404 错误。

我希望能够重用这个 JavaScript,而不必根据它在其中使用的页面类型对其进行修改。理想情况下,我需要相当于 JSTL 的 <c:url>标签。 JavaScript 中有什么允许我创建相对于 servlet 上下文根的 URL 吗?

最佳答案

几个选项:

  1. 设置一个 HTML <base>具有该值的元素(注意:有自己的 advantages and disadvantages )

    <head>
    <base href="${pageContext.request.contextPath}/" />
    ...
    </head>

    然后在 JS 中:

    var contextPath = $("base").attr("href");
    var servletUrl = contextPath + "someservlet";
    // ...

  2. 或者在某处设置一个数据属性

    <html data-contextPath="${pageContext.request.contextPath}/">
    ...
    </html>

    然后在 JS 中:

    var contextPath = $("html").data("contextPath");
    var servletUrl = contextPath + "someservlet";
    // ...

  3. 或者用该值设置一个全局 JS 变量(不好的做法):

    <head>
    ...
    <script>var contextPath = "${pageContext.request.contextPath}/";</script>
    </head>

    然后在 JS 中:

    var servletUrl = contextPath + "someservlet";
    // ...

关于javascript - 如何执行相当于 JSTL 的 c :url in JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7681202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com