JavaScript:ajaxSubmit错误

时间:2010-09-12 17:59:34

标签: javascript jquery browser

我有一个按钮触发的以下JS功能:

function uploadPicture( ) {
    $("form#pictureUpload").ajaxSubmit({
        data: $("form#pictureform").serialize(),
        type: 'post',
        url: '?action=loadpicture',
        success: function(response) {
            $('#div-pictures').html(response);
        }
    }); 

}

这几个月完美无缺。但它今天在Firefox,Safari,Chrome和Opera中停止了工作 - 尽管它仍能在Internet Explorer中正常运行。

Safari给了我以下神秘错误:

    Failed to load resource: cancelled       ?action=loadpicture

Chrome输出几乎相同(没有: cancelled)。 Opera和Firefox完全没有错误。唯一的附加信息是上述错误发生在文件上传完成后,尽管服务器生成HTML输出作为反馈,浏览器会忽略它。

如果你有任何想法如何解决这个问题,请告诉我。我已经在圈子里运行了几个小时甚至没有接近解决方案 - 我只是看到代码和日志文件中没有错误。非常感谢!

2 个答案:

答案 0 :(得分:5)

我花了一段时间,但我终于明白了。我们的一位管理员添加到Apache配置中:

Header append X-FRAME-OPTIONS "DENY"

由于http://jquery.malsup.com/form/#file-upload中描述的iframe用法,导致某些浏览器出现问题。将其更改为以下内容后,所有内容都会再次运行(无代码更改!):

Header append X-FRAME-OPTIONS "SAMEORIGIN"

无论如何,Safari&上的错误消息Chrome很神秘。在其他浏览器上没有任何错误消息的奇怪行为更糟糕。

答案 1 :(得分:0)

嗯,你不应该在URL中使用查询字符串,因为当你调用序列化时,它会将数据转换成一个查询串起来试试这个:

$("form#pictureUpload").ajaxSubmit({
        data: 'action=loadpicture&'+$("form#pictureform").formSerialize(),
        type: 'post',
        success: function(response) {
            $('#div-pictures').html(response);
        }
    });