在 Spring MVC 上有一个 Web 应用程序,客户端向服务器端发送 Ajax 请求。
有一个类映射到:
@RequestMapping("/cars")
映射接受 Ajax 请求的方法:
@RequestMapping(method = RequestMethod.POST)
阿贾克斯请求:
$.ajax({
type: 'POST',
url: '/cars',
data: msg,
success: function(receive) {
alert(receive);
},
error: function() {
alert('Error');
}
});
瓦尔尼克名称:商店
问题:
当我通过 IDEA localhost:8080/cars启动时,请求被处理,当通过服务器localhost:8080/shop/cars - 错误 404
问题: Ajax 将请求发送到什么地址 - 从其描述中的 url 字段向根 url 附加一个字符串?
浏览器对于以哪个地址为基础有自己的想法。而且,它与服务器端的表示不同。在您的情况下,即使在 IDE 中,甚至在服务器中,它也是 localhost:8080 。
在 JSP 中,您可以编写这样的 ajax 调用:
pageContext.request.contextPath将пустой在 IDE 和/shop服务器上。url分别/cars或/shop/cars视情况而定。并且以如此简单的方式它可以在任何地方工作。即使您重命名您的应用程序,它仍然可以工作。
您可以尝试使用 element 设置基地址
<base>。并使用相对引用(没有
/前面的)。我不确定,但它很可能会起作用。
<base>将迫使浏览器(以及随后的 ajax?)重新考虑其关于哪个地址是相对链接的基址的立场。但是您还必须检查页面上的所有链接并使它们与
<base>.可以在 JSP 的第一行创建一个全局 javascript 变量
并在脚本中使用它