【问题标题】:jQuery not working in Internet Explorer 9 (but works in Firefox, Chrome and Opera)jQuery 在 Internet Explorer 9 中不起作用(但在 Firefox、Chrome 和 Opera 中起作用)
【发布时间】:2013-08-17 16:00:45
【问题描述】:

我编写了一个 jQuery 脚本,它可以在 Chrome、Firefox 和 Opera 中运行,但不能在 Internet Explorer 9 中运行。

基本上,使用 ajax 在后台加载的图像应该淡入淡出并随着其他图像上传到同一文件夹中而动态替换。在 Internet Explorer 中,脚本无法正常工作,并且图像未加载。

我尝试使用 firebug 和 IE 开发工具栏进行调试,但我有点缺乏经验。

你能帮帮我吗?谢谢!

jQuery 代码

$(window).load(function () {
    var data;
    $('.nascosto').hide();
    $('.ciccio').hide();

    $.ajax({
        type: "GET",
        url: "phpdelete.php",
        success: function (data) {

            $("<img/>").attr("src", data).load(function () {
                $(this).remove();
            });
        }
    });


    setInterval(prova, 1000);

    function prova() {
        $.ajax({
            type: "GET",
            url: "phpdelete.php",
            success: function (data2) {
                if (data2 != data) {
                    $('.ciccio').fadeOut(2000, function () {
                        $("<img/>").attr("src", data2).load(function () {
                            $(this).remove();
                            $('.ciccio').css('background-image', 'url(' + data2 + ')').delay(500).fadeIn(2000);
                            data = data2;
                        });
                    });
                }
            }
        });
    }

});

【问题讨论】:

  • 请提供小提琴。
  • 您需要以某种方式对其进行调试并找出首先出现问题的原因。
  • 下次你真的应该缩进你的代码。它绝对在调试方面很有帮助。 (我刚刚使用 jsFiddle TidyUp 清理了它。)
  • 我知道我需要调试,问题是我不知道它是如何完成的 :) 我尝试创建一个 jsfiddle (jsfiddle.net/4VD37),但在我的脚本中有一个 ajax 请求一个外部 php 页面,它在 JSFiddle 上不起作用......实际上是否可以向另一台服务器发出 ajax 请求?抱歉,我还在学习中!
  • .load(function) 自 1.8 以来已过时,您需要停止使用它(并在它们出现时阅读 jquery 发行说明以防止此类 oops 问题) .load 用于通过以下方式加载数据阿贾克斯:api.jquery.com/load-event

标签: jquery cross-browser internet-explorer-9


【解决方案1】:

我解决了这个问题。调试本身对我没有帮助,因为代码实际上很干净:即使使用 Internet Explorer 9 开发人员工具控制台,我也没有发现任何错误。

由于没有错误但仍然没有加载图像,因此问题必须出在 ajax 调用中。我添加此代码是为了在出现错误时发出警报:

jQuery 代码

error: function (jqXHR, textStatus, errorThrown) {
    alert(textStatus);
    alert(errorThrown);
}

Chrome 未显示任何错误,而 Internet Explorer 则显示 NoTransport 错误。 经过一番搜索,我找到了这个线程'No Transport' Error w/ jQuery ajax call in IE,它建议在ajax调用之前添加这个:

$.support.cors = true;

而且它有效。

【讨论】:

    猜你喜欢
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多