jQuery ajax只能在IE调试器打开时在IE中工作

前端之家收集整理的这篇文章主要介绍了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调用,控制器中的断点被击中. Action没有返回任何东西(它的类型为void),只是计算一些东西.我已经试过在this thread提供的插件解决方案,但没有用.

更新:

为了演示这个问题,我发布了简单的MVC应用程序here.当您点击图像时,浏览器会对此操作发出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,errorThrown) {
            $("#error-summary").text(errorThrown);
        });
    });
});

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

解决方法

听起来你可能会得到缓存的响应.开发人员工具可能启用了始终从服务器刷新选项,使您只有在打开工具时才能获得新的响应.

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

猜你在找的jQuery相关文章