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