【问题标题】:JQuery AJAX won't display on Internet ExplorerJQuery AJAX 不会在 Internet Explorer 上显示
【发布时间】:2017-01-30 04:42:22
【问题描述】:

我有一个选择和更新 SQL 表的表单。

JS:

<script>  
$(document).ready(function(){  
  function fetch_data()  
  {  
       $.ajax({  
            url:"select.php",  
            method:"POST",  
            cache:"false",
            success:function(data){  
                 $('#live_data').html(data);  
            }  
       });  
  }  
  fetch_data();  

  function edit_data(id, text, column_name)  
  {  
       $.ajax({  
            url:"edit.php",  
            method:"POST",  
            cache:"false",
            data:{id:id, text:text, column_name:column_name},  
            dataType:"text",  
            success:function(data){  
                 $('#updatesucess').html(data);  
                  $('#updatesucess').delay(2000).fadeOut(300);
            }  
       });  
  }  
  $(document).on('blur', '.OilProd', function(){  
       var id = $(this).data("id2");  
       var OilProd = $(this).text();  
       edit_data(id, OilProd, "OilProd");  
    });  
  });  
 </script>

表格:

<html>  
  <head>  
       <meta http-equiv="X-UA-Compatible" content="IE=edge" />
       <title>Live Table Data Edit</title>  
       <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />  
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
       <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>  

  </head>  
  <body>  
       <div class="container">  
            <div class="row">
            <div class="col-lg-12">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <strong>Kodiak Daily Production
                    </strong>
                    </div>
                    <!-- /.panel-heading -->
                    <div class="panel-body">


            <div class="table-responsive">  
                 <div id="updatesucess"></div>
                 <p></p>
                 <div id="live_data"></div>                 
            </div>  
       </div> <!-- close panel body --> 
       </div> <!-- panel panel-default -->
       </div> <!-- close col-lg-12 -->
       </div> <!-- close row --> 
       </div> <!-- Close Container --> 
  </body>  
</html> 

以下代码在 Firefox 和 Chrome 上显示 php 的内容,但在 IE8/9 中不显示。

我已经尝试了以下

设置 cache:"false", 异步:假, 从获取更改为发布,但没有去。

我还需要做什么才能在 Internet Explorer 8-11 中运行?

更新:

在 HTML 中添加了以下标记,现在至少可以显示数据,但无法对表单进行任何编辑。

 <meta http-equiv="X-UA-Compatible" content="IE=edge" />

【问题讨论】:

  • 可能是javascript在你的IE检查中被禁用并更正
  • java 脚本已启用。
  • 尝试在成功{}块中作为第一行的数据上的 alert(data) 或 console.log(data)。我认为其中一个 jQuery 函数可能在 IE 上失败
  • 什么版本的jQuery? jQuery 2.x 放弃了对 IE8 的支持。
  • 你说你需要让它在 IE8 中运行,所以你肯定需要将 jQuery 降级到 v1.x 而不是 v2。不过,这不应该对它在 IE11 中的工作方式产生任何影响,因此这与您现在遇到的问题是分开的。

标签: php jquery ajax internet-explorer


【解决方案1】:

出于某种原因,Internet Explorer 有时在缓存方面有其自己的生命。如果您检查 Internet Explorer 控制台中的网络选项卡,您将看到 ajax 请求的 304 状态(未修改)。我有时会遇到这种情况,似乎请求被 Internet Explorer 阻止并且永远不会到达服务器。

您可以尝试通过在ajax函数中添加一个带有随机数的get参数来解决问题。

$.ajax({  
        url:"select.php?breakcache=" + Math.random(),  
        method:"POST",  
        cache:"false",
        success:function(data){  
             $('#live_data').html(data);  
        }  
});

【讨论】:

    【解决方案2】:

    尽管运行 IE11 并指定 X-UA-Compatible,您仍应检查 IE 使用的渲染模式。特别要检查它是否使用 Quirks Mode,因为这肯定会杀死 Ajax(以及许多其他功能)。

    我怀疑这可能是问题所在,因为您的 HTML 代码不包含 DOCTYPE,而缺少的 doctype 会自动使 IE 跳转到怪癖模式。

    通过将 HTML5 文档类型添加到 HTML 文件的顶部(紧接在 &lt;html&gt; 标记上方)来解决此问题:

    <!DOCTYPE html>
    

    这应该可以解决问题。

    【讨论】:

    • 添加了标签 '' 但还是不行。
    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多