【问题标题】:jQuery Ajax not working in IE 9 or olderjQuery Ajax 在 IE 9 或更早版本中不工作
【发布时间】:2015-05-25 12:33:55
【问题描述】:

我将 jQuery 与 ajax 一起使用,它可以在除 IE 9 或更早版本之外的所有浏览器中运行。 jQuery 本身可以工作, 但不是 ajax 调用。我使用以下代码:

HTML:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

JS:

if ($('#page-home').length) {
    var $targetDivOffers = $('#results-recent-offers');

    var query = {};
    query = {
        status: 'all',
        category: 'all',
        limit: 3
    };

    // first load recent gesuche
    query.type = 1;

    $targetDivOffers.html('');

    $.ajax({
        type: "POST",
        url: "system/process-get-adverts.php",
        data: query,
        dataType: 'JSON',
        cache: false
    }).done(function (html) {
        $('.ajax-loader').show().delay(300).promise().done(function () {
            $('.ajax-loader').fadeOut().promise().done(function () {
                $targetDivOffers.html(html.results);
            });
        });
    }).fail(function (jqxhr, textStatus, error) {
        var err = textStatus + ", " + error;
        $targetDivOffers.html("Request Failed: " + err);
        });
}

我的代码在 IE9 或更早版本中无法运行的原因是什么?

更新

我尝试最小化我的代码以检查我是否正确集成了 jQuery。以下代码在 IE 9 或更低版本中仍然无法使用:

<!doctype html>
<!--[if lt IE 7]>
<html class="no-js lt-ie9 lt-ie8 lt-ie7" lang=""> <![endif]--> <!--[if IE 7]>
<html class="no-js lt-ie9 lt-ie8" lang=""> <![endif]--> <!--[if IE 8]>
<html class="no-js lt-ie9" lang=""> <![endif]--> <!--[if gt IE 8]><!-->
<html class="no-js" lang=""> <!--<![endif]-->

<head>
    <meta title="Test">
</head>

<body>

<p id="test"></p>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="assets/js/jquery-1.11.1.min.js.js"><\/script>')</script>

<script type="text/javascript">
    $.ajax({
        url: 'http://api.joind.in/v2.1/talks/10889',
        data: {
            format: 'json'
        },
        error: function () {
            $('#info').html('<p>An error has occurred</p>');
        },
        dataType: 'jsonp',
        success: function (data) {
            var $title = $('<h1>').text(data.talks[0].talk_title);
            var $description = $('<p>').text(data.talks[0].talk_description);
            $('#test')
                .append($title)
                .append($description);
        },
        type: 'GET'
    });
</script>

</body>

</html>

这段代码有什么问题?

【问题讨论】:

  • 您使用的是哪个版本的 jQuery?
  • 究竟出了什么问题?你检查过开发者控制台是否有错误?
  • “不工作”不是一个有用的问题描述。您在 F12 开发工具中看到了哪些错误?通话根本就没有完成吗?完成并致电fail?让你的电脑着火?
  • @T.J.Crowder - 我认为这是最后一个。绝对火了!
  • @Doro:您的示例在 IE9 中适用于我:jsfiddle.net/fcmp3d5e/1

标签: javascript jquery ajax internet-explorer internet-explorer-9


【解决方案1】:

可能是 Jquery 没有正确加载。 尝试如下:

<!--[if lt IE 9]>  
    <script src="jquery-1.9.0.js"></script>  
<![endif]-->  
<!--[if (gte IE 9) | (!IE)]><!-->  
    <script src="jquery-2.0.0.js"></script>  
<!--<![endif]-->

另一个原因可能是 jQuery/IE 没有正确地对双引号进行 urlencode 并显示在 URL ("") 中,而不是编码的双引号 (%22)。

【讨论】:

  • 我试过了,但这也没有用。我已经更新了我的代码。我创建了一个测试文件。我帖子末尾的代码仍然无法在 IE 9 或更低版本中运行。
猜你喜欢
  • 2013-09-06
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多