jquery datatable ajax url重复了部分url路径。

问题描述 投票:0回答:1

我有一个spring boot web应用程序,在我的本地运行良好,现在部署到服务器上时,我遇到了以下问题。

链接到其他页面。

在我的本地,下面的链接可以正常工作。

<a class="dropdown-item" href="/admin/manage-users">Users</a>

但在部署到服务器上时,工作的url应该是这样的:"链接到其他页面"。http://website.com/projectname/admin/manage-users 但它显示为: http://website.com/admin/manage-users 给我404 not found错误。为了解决这个问题,我不得不使用以下两种方法。

去掉前面的斜杠

<a class="dropdown-item" href="admin/manage-users">Users</a>

或者使用thymeleaf上下文相关的URLs。

<a class="dropdown-item" th:href="@{/admin/manage-users}">Users</a>

Ajax调用。

我尝试了同样的方法与ajax调用,但在这种情况下,它没有工作。我有一个datatable,如下所示,在我的本地工作正常。

var t_users = $("#tbl_users").DataTable({
    "ajax": {
        "url": "/admin/get-users",
        "type": "GET",
        "dataSrc": ""
    }, ...

但在服务器上却给了我同样的404未找到的错误,因为: projectname 缺少了,所以我试着去掉前面的斜杠,现在我得到一个datatables的ajax错误,因为在url中的 admin 显示两次。.../admin/admin/manage-users 所以为了解决这个问题,我从这里找到了 联系 我需要删除 admin 的网址,如下图所示。

var t_users = $("#tbl_users").DataTable({
    "ajax": {
        "url": "get-users",
        "type": "GET",
        "dataSrc": ""
    },

有没有其他方法让这个工作使用 admin/get-users 以避免混淆?

jquery ajax spring-boot web-deployment
1个回答
0
投票

我建议在ajax调用中采用动态方法来避免这些问题。

  1. 在一个js文件中动态地准备context url - url.js
    var appHost = window.location.host;
    var appProtocol = window.location.protocol
    var pathArray = window.location.pathname.split('/');
    var context = pathArray[1];

    var contextUrl = appProtocol +"//"+ appHost +"/"+ context;
  1. 使用这个上下文url与api,并准备在ajax的每一个url。
var url = contextUrl + "/admin/get-users" ;

var t_users = $("#tbl_users").DataTable({
    "ajax": {
        "url": url,
        "type": "GET",
        "dataSrc": ""
    }, ...

© www.soinside.com 2019 - 2024. All rights reserved.