【问题标题】:jQuery $.get is not even firing a request in Internet Explorer, and I'd love to know whyjQuery $.get 甚至没有在 Internet Explorer 中触发请求,我很想知道为什么
【发布时间】:2011-12-20 16:10:16
【问题描述】:

这不是缓存问题,并且代码在所有其他浏览器中都可以正常工作。

我有一个由按钮单击触发的简单 $.get 请求。打开 Fiddler 以监视 Internet Explorer 9 HTTP 流量,我可以单击该按钮,然后在我的计算机上看到到 www.mydatasource.com 的 HTTP 流量为零。我从来没有见过。

知道为什么我没有看到请求发出吗?谢谢!

$('#mybutton').click(function () {
    $.get('http://www.mydatasource.com/', function(data){});
}

--------更新-------------

还尝试了一种更原始​​的方法(在 Internet Explorer 9 中也不起作用):

$('#mybutton').click(function () {
    var data = httpGet('http://www.mydatasource.com/');
}

function httpGet(theUrl)
{
   var xmlHttp = null;
   xmlHttp = new XMLHttpRequest();
   xmlHttp.open( "GET", theUrl, false );
   xmlHttp.send( null );
   return xmlHttp.responseText;
}

在这种情况下,您会认为您会看到 Fiddler 发出请求,但同样,完全静默。 我认为这可能是一个跨域问题,但已将所有内容(网页、脚本、“获取”网址)放在同一个域中,但仍然没有从 Internet Explorer 8 获得流量。任何建议欢迎。

【问题讨论】:

  • 您使用的是哪个版本的 Internet Explorer?
  • @maxenglander Internet Explorer 9 在 Windows 上。谢谢
  • 你怎么知道不是缓存问题?
  • 我怀疑这不是缓存问题,因为我从未见过请求发出。如果是缓存问题,我可以重置浏览器,重新启动计算机,并至少在第一时间看到请求发出。事实上,我从来没有能够从 IE 中获得任何 $.get 请求(我一直在通过 Fiddler 监控 HTTP 流量 - 所以它可能以某种方式丢失了流量,但我认为它会接收所有内容。 )。谢谢!

标签: jquery internet-explorer


【解决方案1】:

这是因为 Internet Explorer 缓存了请求,因此请求仅在第一次被触发。

您可以使用ajaxSetup() 来避免这种情况

jQuery.ajaxSetup({cache: false});

$('#mybutton').click(function () {
    $.get('http://www.mydatasource.com/', function(data){});
});

通过这种方式,等于当前时间戳的变量被发送到服务器,浏览器不会缓存调用,因为参数已更改。

你也可以

var noCache = new Date().getTime();
$.get('http://www.mydatasource.com/',{nocache: noCache},  function(data){});

【讨论】:

  • 嗨 Nicola- 感谢您的帮助。我不认为这是一个缓存问题。我从来没有见过这个请求发出去,从来没有,从来没有,从来没有。甚至不是第一次。
【解决方案2】:

这是因为 IE 缓存了请求。在您的网址末尾添加当前日期戳。在这种情况下,每个请求都将指向唯一的 url:

$('#mybutton').click(function () {
    $.get('http://www.mydatasource.com/?' + new Date().getTime(), function(data){});
}

【讨论】:

  • 嗨 Samich- 感谢您的帮助。我不认为这是一个缓存问题。我从来没有见过这个请求发出去,从来没有,永远,永远。甚至不是第一次。
  • 在你的情况下可能是另一个问题,但我在使用它的每个项目中都遇到了它。
【解决方案3】:

我可能错了,但你确定你用 .ready 函数包装你的代码吗?

jQuery(document).ready(function($){

})

【讨论】:

  • 谢谢 Bouchaala- 我正在这样做。为了简单起见,我把它省略了。
  • Oki,有时人们会忘记它;) 你试过 .live('click',function(){}) 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多