无Java应用程序上下文的javascript AJAX调用
我有一个(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操作来解决这个问题
# 1 楼答案
非常简单,您可以包含带有隐藏输入的上下文,例如
然后在你的js中
或者更好的方法是获取当前窗口位置(路径),以及一些字符串操作来获取上下文
更新0:
事实:
假设您将有
/a
、/b
和/c
上下文,我不知道,但通常它们将被映射到a.com
、b.com
和c.com
,并且服务器将上下文标识为请求的主机,如下所示但是,如果您没有按照上面的方法进行操作,那么在生成jsp文件时,可以将上下文路径设置为隐藏输入方法