jquery datatable ajax url дублирует часть пути url - PullRequest
0 голосов
/ 05 мая 2020

У меня есть веб-приложение с весенней загрузкой, которое отлично работает на моем локальном компьютере, теперь при развертывании на сервере у меня возникли следующие проблемы:

ссылка на другие страницы:

На моем локальном компьютере ниже работает нормально:

<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: не найдено. Чтобы исправить это, мне пришлось использовать одно из следующих:

Удалить ведущий sla sh:

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

или использовать контекстно-зависимые URL-адреса тимелеафа:

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

Ajax звонков:

Я пробовал тот же подход с ajax звонками, но в этом случае это не сработало. У меня есть таблица данных, как показано ниже, которая отлично работает на моем локальном:

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

Но на сервере выдает ту же ошибку 404 not found, потому что projectname отсутствует в URL-адресе, поэтому я попытался удалить ведущий sla sh, и теперь я получаю ошибку datatables ajax, потому что в URL-адресе admin отображается дважды: .../admin/admin/manage-users, чтобы исправить это, я узнал из этой ссылки Мне нужно чтобы удалить admin из URL-адреса, как показано ниже:

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

Есть ли другой способ сделать эту работу, используя admin/get-users в URL-адресе, чтобы избежать путаницы?

1 Ответ

0 голосов
/ 05 мая 2020

Я бы посоветовал использовать динамический c подход, чтобы избежать этих проблем в ajax вызовах:

  1. Подготавливать контекстный URL динамически в одном js файле - 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;
используйте этот контекстный URL с api и подготовьте каждый URL в ajax:
var url = contextUrl + "/admin/get-users" ;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...