【问题标题】:jQuery does not work in IE11, but works in ChromejQuery 在 IE11 中不起作用,但在 Chrome 中起作用
【发布时间】:2015-12-13 12:28:25
【问题描述】:

我对 jQuery 有疑问。当我在 Chrome 中上传图像时,它会成功执行 AJAX,并且我可以使用响应数据更新页面。但在 IE 11 和 Firefox 中却没有。代码:

$(".newfoto").on('submit', (function(e) {
    $("#mailresult").html('<img src="themes/standart/iconss/spin1.gif" alt="loading..." /><p>Please, wait...</p>');
    e.preventDefault();
    $.ajax({
        url: "dataok.php?act=foto",
        type: "POST",
        data: new FormData(this),
        contentType: false,
        cache: false,
        processData: false,
        success: function(data) {
            $("#mailresult").html(data);
            setTimeout(function() {
                $("#mailresult").empty();
            }, 2000);
            var imgTag = '<img src="image.php?imgid=' + escape($('.myphoto').attr('id')) + '" />';
            $('.myphoto').html(imgTag);
        },

        error: function() {}

    });
}));

【问题讨论】:

  • 请适当地格式化您的代码以使其可读。您既需要适当的缩进,又需要摆脱双倍间距。
  • @jfriend00 哪个双倍行距?我无法理解。对不起
  • 您问题中的代码在几乎每一行实际代码之间都有一个空行。
  • @jfriend00 我编辑了代码。你的意思是这个?
  • 是的,删除了所有多余的空行。正如我在第一条评论中所说,请也添加适当的缩进。如果您不明白我的意思,请将您的代码粘贴到此处:jsbeautifier.org 并按下美化按钮。

标签: javascript jquery ajax google-chrome


【解决方案1】:

防止表单提交和重新加载页面的正确方法是在提交函数的末尾使用return false;。这也将替换您代码中的e.preventDefault();

此外,并非所有浏览器都支持FormData。见https://stackoverflow.com/a/2320097/584192。您可能需要检测并解决此问题。

$(".newfoto").on('submit', function(e) {
    $("#mailresult").html('<img src="themes/standart/iconss/spin1.gif" alt="loading..." /><p>Please, wait...</p>');
    $.ajax({
        url: "dataok.php?act=foto",
        type: "POST",
        data: (typeof FormData === 'function') ? new FormData(this) : $(this).serialize(),
        contentType: false,
        cache: false,
        processData: false,
        success: function(data) {
            // success
        },
        error: function(jqXHR, status, error) {
            console.log(error);
        }
    });
    return false;
});

【讨论】:

  • var imgTag = ''; $('.myphoto').html(imgTag); // 问题出在这几行。也许我可以改变它,但如何?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多