jQuery ajax работает только в IE, когда отладчик IE открыт
Я столкнулся с проблемой IE (11). У меня есть простой код jQuery:
$("#my-radio").click(function () {
$.ajax({
url: "/my-url",
}).error(function(jqXHR, textStatus, errorThrown) {
$("#error-summary").text(errorThrown);
});
});
Дело в том, что этот код отлично работает во всех браузерах, кроме IE (в моем случае, кроме IE 11, еще не тестировался в более ранних версиях), но когда я открываю IE, встроенный в отладчик javascript, чтобы видеть, что неправильно - все начинает работать просто хорошо. IE делает вызов ajax для действия контроллера, удаляется точка останова в контроллере. Действие не возвращает ничего (это тип void
), просто подсчитывая некоторые вещи. Я уже пробовал решение для плагинов в этой теме, но это было не полезно.
ОБНОВЛЕНИЕ:
Чтобы продемонстрировать этот вопрос я опубликован простое приложение MVC здесь. Когда вы нажимаете на изображение, браузер делает запрос ajax для этого действия:
public string Hello()
{
string ip = Request.ServerVariables["REMOTE_ADDR"];
string agent = Request.UserAgent;
var request = new Request
{
IP = ip,
Time = DateTime.UtcNow,
UserAgent = agent
};
_requestsRepository.Add(request);
int byIp = _requestsRepository.GetTotalRequestsCountByUser(ip);
int total = _requestsRepository.TotalRequests;
string message = string.Format("Hello, {0}. This is your {1}th request and {2}th request in total.", ip, byIp, total);
return message;
}
с этим кодом jQuery:
$(document).ready(function () {
$("#click-me").click(function () {
$.ajax({
url: "/services/hello",
})
.success(function (data) {
alert(data);
})
.error(function (jqXHR, textStatus, errorThrown) {
$("#error-summary").text(errorThrown);
});
});
});
Как вы можете видеть - действие возвращает простую строку, которая предупреждается об успешном завершении. Вы можете попробовать эту страницу в IE. Вы заметите, что количество запросов не растет, потому что нет запроса на самом деле отправлено, но все - таки success
обработчик события вызывается и сообщение будет предупрежден (это, вероятно, какой - то старый кэшируются сообщение после того, как какой - то, возможно, один успешный запрос, я не уверен,). В любом другом браузере количество запросов будет расти, потому что они отправляются каждый раз, когда вы нажимаете на изображение. Если вы включите отладчик IE - запросы будут отправлены тоже. Я предлагаю, что это какая-то проблема, связанная с кешем IE.
Ответы
Ответ 1
Похоже, вы можете получать кешированные ответы. У инструментов разработчика может быть включен параметр Всегда обновлять с сервера, что позволяет вам получать свежий ответ только при открытии самих инструментов.
Попробуйте добавить параметр cache
в объект опций jQuery AJAX и установите его значение равным false
.