Это тоже случилось со мной, но причина была не в том, что ajax сходит с ума - как это может выглядеть - но в том, что URL был неправильным.
Сайт изначально размещался на localhost без псевдонима, поэтому у меня был рабочий URL, например localhost / controller / action.
Затем я переместил сайт под псевдонимом - таким образом, URL сайта был localhost / alias. На этом этапе две странные вещи были удовлетворены НЕКОТОРЫМИ запросами ajax:
- запросы были запрошены для аутентификации (веб-сайт использовал Windows-аутентификацию)
- сеанс запросов отличался от сеанса на странице, на которой был запущен запрос
Проблема заключалась в том, что некоторые URL были жестко закодированы в коде js. Таким образом, в коде вызовов ajax у нас был код типа * url: '/controller/action'
, и этот URL не учитывал псевдоним, под которым веб-сайт размещался в IIS.
Решением было объявить переменную js на странице и присвоить ей URL-адрес, созданный правильным образом, с помощью Url.Action, а затем использовать переменную в вызове ajax:
Страница:
<script type="text/javascript">
var ajaxUrl = '@Url.Action("actionname", "controllername")';
</script>
Файл JS:
$.ajax({
type: 'POST',
url: ajaxUrl,
...