JavaScript:ajaxSubmit错误
我有一个按钮触发的JS函数: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
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"