Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:ajaxSubmit错误_Javascript_Jquery_Browser - Fatal编程技术网

JavaScript:ajaxSubmit错误

JavaScript:ajaxSubmit错误,javascript,jquery,browser,Javascript,Jquery,Browser,我有一个按钮触发的JS函数: function uploadPicture( ) { $("form#pictureUpload").ajaxSubmit({ data: $("form#pictureform").serialize(), type: 'post', url: '?action=loadpicture', success: function(response) { $('#div-p

我有一个按钮触发的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中停止工作,尽管它在InternetExplorer中仍然可以正常工作

Safari给了我以下神秘的错误:

    Failed to load resource: cancelled       ?action=loadpicture
Chrome的输出几乎相同(没有
:取消
)。Opera和Firefox没有显示任何错误。唯一的附加信息是,上面的错误发生在文件上传完成之后,尽管服务器生成一个HTML输出作为反馈,但浏览器会忽略该反馈


请让我知道,如果你有任何想法如何解决这个问题。我已经循环运行了几个小时,甚至没有找到解决方案——我只是在代码和日志文件中没有看到任何错误。非常感谢

Hmmm您不应该在URL中使用查询字符串,因为当您调用serialize时,会将数据转换为串接的查询。请尝试以下操作:

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

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

Header append X-FRAME-OPTIONS "DENY"
这在某些浏览器上导致了问题,因为中介绍了iframe的用法。将其更改为以下内容后,一切都恢复正常(无代码更改!):


不管怎样,Safari&Chrome上的错误消息是神秘的。在其他浏览器上没有任何错误消息的奇怪行为更糟糕。

我不知道答案,但有一些想法需要调查:-我认为在执行POST请求时指定?parm=值是不正确的。通常,当您执行GET请求时,您提供的所有参数都以这种方式附加到URL;发布时,值会像表单数据一样提交。尝试使用隐藏的输入。我可能弄错了,也许这是允许的,尽管这不是正常的用法-看起来您正在发回定义此代码的同一页面,不确定这是否是正确的行为-您使用的jQuery版本与以前不同吗?没有一个jQuery版本是相同的。我所知道的唯一区别是Apache和mod-php的一个小更新。是不是“action=loadpicture”和以前一样工作?您是否尝试过同步调用此url?如果我直接通过浏览器调用,action=loadpicture效果非常好。这就是你的意思吗?如果可以的话,一定要接受这一点,以免以后让别人头疼:)
Header append X-FRAME-OPTIONS "SAMEORIGIN"