Мне нужно отправлять запросы обратно на мой сервер в моем веб-приложении, например, пользователь щелкает элемент таблицы и загружает дополнительные данные в другую часть этой же страницы.
До сих пор я делал это с помощью запросов AJAX, которые работали нормально (хотя, если это не лучший способ, я бы приветствовал любые альтернативные предложения).
Проблема, которую я обнаружил, заключается в том, что запросы больше не работали, когда я публиковал сайт в IIS. Просматривая его, я обнаружил, что в URL-адресе что-то отсутствует при вызове из IIS.
Например, в отладке (localhost) я делаю запрос следующим образом:
await $.ajax({
type: 'GET',
url: 'products?handler=productid=' + productId});
... где 'products' - это имя страницы, с которой я запросил, путь к которой localhost/products
.
При размещении в IIS URL-адрес теперь равен localhost/mynewapp/products
, поэтому базовый путь изменился, поэтому мои запросы не работают в IIS.
Я исправил это, добавив следующий метод JS:
function GetBaseUrl() {
var url = window.location;
return url.pathname;
}
… и затем изменить вызов AJAX на:
await $.ajax({
type: 'GET',
url: GetBaseUrl() + '?handler=productid=' + productId});
Это работает как в отладке, так и в IIS.
Мне это кажется немного хакерским, и поэтому мой вопрос: как правильно справиться с этой ситуацией?