jQuery $ .get甚至没有在Internet Explorer中发出请求,我很想知道原因

时间:2011-12-20 16:10:17

标签: jquery internet-explorer

这不是缓存问题,,并且代码在所有其他浏览器中都能正常运行。

我点击了一个简单的$ .get请求。随着Fiddler打开监视Internet Explorer 9 HTTP流量,我可以单击该按钮,我看到我的计算机上的www.mydatasource.com的HTTP流量为零。我从未见过任何人。

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

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

-------- ------------- UPDATE

还尝试了一种更原始​​的方法(在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中获取任何流量。任何建议欢迎。

3 个答案:

答案 0 :(得分:3)

这是因为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){});

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

})