jQuery不能在IE11中工作,但可以在Chrome中工作

jQuery does not work in IE11, but works in Chrome

本文关键字:工作 但可以 Chrome 不能 jQuery IE11      更新时间:2023-09-26

我对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() {}
    });
}));

防止表单提交和重新加载页面的正确方法是在提交函数的末尾使用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;
});
相关文章: