【问题标题】:Jquery .Get() pulls NULL in Internet ExplorerJquery .Get() 在 Internet Explorer 中拉取 NULL
【发布时间】:2010-07-26 13:05:38
【问题描述】:

我在 JQuery 中的 AJAX 调用有问题。它适用于 Chrome、FF 和 Safari,但不适用于 IE。事实上,在 IE 中什么都没有发生,没有错误,没有加载数据。

代码如下:

    $(document).ready(function() {

     $.ajaxSetup({ cache: false });

        $.get("ShoppingCart2.aspx", { }, function(data) {
           //query the jq object for the values

        alert(data);       
        alert($(data).find('#Items').text());


        var intI = parseInt(($(data).find('#Items').html()));

通过警报数据,我找到了我正在调用的页面中的所有数据,但不幸的是,我的 data.find 方法为 IE 提取了 null。我不确定是代码还是浏览器,但我真的被卡住了。谢谢你的帮助。

编辑:我确实添加了 cache: false 命令,但我仍然没有运气。我真的不明白为什么这在 IE 中不起作用。

【问题讨论】:

  • 如果是缓存问题,只用 JavaScript 是无法解决的,你需要真正拥有服务器访问权限并修改传出的 header 以取悦 IE,stackoverflow.com/questions/3288500/… 否则你会得到很多 304来自服务器,尽管您使用一些随机数据修改了 url。由于实际的消息正文没有被修改。
  • 我试过这样做,但没有奏效。我也很好奇为什么我的警报(数据);会提取我从中提取信息的网页上的所有数据,但是为什么我的 data.find 无法正常工作...这会是缓存问题吗,因为我可以提取整个页面的实际 html警报(数据); ?

标签: javascript jquery ajax


【解决方案1】:

试试这个(在你的页面/外部 js 中,你的 AJAX 调用之前):

$.ajaxSetup({ cache: false });

IE 喜欢缓存地狱般的东西,如果您正在测试并且在某一时刻没有内容,那么 IE 很可能会保留它。使用$.ajaxSetup() 并默认告诉它not 缓存AJAX 结果应该可以解决这个问题。如果您好奇,它会在 URL 上粘贴时间戳作为幕后的缓存破坏器,请使用 fiddler 来查看这种情况。

【讨论】:

    【解决方案2】:

    可能是缓存 AJAX 吗?如果你把它放在你的代码之前会发生什么:

    $.ajaxSetup({ cache:false });
    

    【讨论】:

      【解决方案3】:

      无需编码的快速解决方案是在刷新时按 CTR+F5 清除缓存。

      【讨论】:

        【解决方案4】:

        好吧,我无法在 Internet Explorer 中使用 .get 的 .find 部分,但我确实找到了获取所需 ajax 信息的方法:

        var information = $.ajax({ type: "GET", dataType: "html", url: "ShoppingCart2.aspx", data: querystring, async: false }).responseText + " ";

        这会将查询字符串传递给网站,然后将来自网站的信息返回到一个大字符串中。我那时 操纵该字符串以获得我需要的东西。不幸的是,它比 .get 命令慢很多,但它是一个修复程序。

        感谢大家的帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-19
          • 2012-02-23
          • 2012-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多