gpt4 book ai didi

javascript - 没有 Java 应用程序上下文的 AJAX 调用

转载 作者:行者123 更新时间:2023-12-03 08:55:48 25 4
gpt4 key购买 nike

我有一个(Spring 驱动的)Java 应用程序,它有一些 AJAX 调用。问题是我正在使用应用程序上下文 (/spring-mvc) 来访问服务器端功能。

var api = '/api/v1';
var context = '/spring-mvc' + api;

$.ajax({
type: 'GET',
url: context + '/users/' + $('#user-id').val()
}).done(function (response) {
callback({ data: response.user, binding: response.binding });
}).fail(function (jqXHR, textStatus, errorThrown) {
callback({ jqXHR: jqXHR });
});

现在,我的问题是每当我必须将其部署到其他地方并且无法控制应用程序上下文时,AJAX 调用最终都会失败,因为应用程序上下文本身是在 JavaScript 中硬编码的。

是否有任何方法可以实现此目的,而无需更改所有 JavaScript 文件中的 context 变量?像这样的东西:

$.ajax({
type: 'GET',
url: '/api/v1/users/' + $('#user-id').val()
}).done(function (response) {
callback({ data: response.user, binding: response.binding });
}).fail(function (jqXHR, textStatus, errorThrown) {
callback({ jqXHR: jqXHR });
});

我在许多应用程序中多次看到过这种情况,但我不明白他们是如何做到这一点的。

注意: Web 应用程序部署在同一个 WAR 文件中;我想避免尝试通过在 JavaScript 中进行 URL 操作来解决这个问题。

最佳答案

非常简单,您可以包含带有隐藏输入的上下文,例如

<input type="hidden" id="ctx" name="ctx" value="<applciation_context_here>"/>

然后在你的js中

var context = document.getElementById("ctx").value/*getAttribute('value')*/ + api;

<小时/>或者更好的方法获取当前的窗口位置(路径),以及一些字符串操作来获取上下文<小时/>更新0:

事实:

假设您将拥有 /a/b/c 上下文,我不知道,但通常它们会被映射到 a.comb.comc.com 和上下文将被服务器识别为请求的主机,例如以下

a.com -> local_host/a
b.com -> local_host/b

但是如果你不按照上面的方式,当你生成jsp文件时,你可以将上下文路径设置为隐藏输入方法

关于javascript - 没有 Java 应用程序上下文的 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32505616/

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