当IE调试器打开时,jQuery ajax只能在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 ),只计算一些东西。 我已经尝试过在这个post中提供的插件解决方案,但它没用。

更新:

为了演示这个问题,我在这里发布了简单的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); }); }); }); 

如您所见 – action返回简单的字符串,该字符串会在成功时发出警报。 您可以在IE中尝试此页面。 你会注意到请求的数量没有增加,因为实际上没有发送任何请求,但是仍然调用了success事件处理程序并且警告了消息(这可能是一些旧的缓存消息,在一些可能成功的请求之后,我不确定)。 在任何其他浏览器中,请求数量将增加,因为每次单击图像时都会发送这些请求。 如果你打开IE调试器 – 也会发送请求。 我建议这是某种与IE缓存相关的问题。

听起来你可能会得到缓存的回复。 开发人员工具可能启用了“ 始终从服务器刷新”选项,这使您只能在打开工具本身时获得新的响应。

尝试在jQuery AJAX选项对象中添加cache选项,并将其值设置为false