jQuery在IE11中不起作用,但适用于Chrome

时间:2015-09-16 19:06:36

标签: javascript jquery ajax google-chrome

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

    });
}));

1 个答案:

答案 0 :(得分: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;
});