jquery.form.js在Internet Explorer 9中无法工作

4
我有一个简单的表单,其中包含一个文件上传控件。当我点击“上传”按钮时,表单将被提交。我正在尝试使用jquery.form.js进行jquery-ajax提交。
我的代码如下:
var options = {
    beforeSubmit: function (formData, jqForm, options) {
        $(".loaderImage").show();
        return true;
    },
    success: function (responseText, statusText, xhr, $form) {
        $("#result").html(responseText);
    },
    error: function(xhr) { alert(xhr.responseText); }
};
$("#AjaxFileUpload").ajaxSubmit(options);
return false;

Google Chrome、Firefox 和 Internet Explorer 10 中,它运行得很好。问题出现在Internet Explorer 9,调试后发现它没有进入success()。有什么指针可以告诉我是什么出了问题?控制台中也没有任何错误。

我添加了error选项,但问题仍然存在,断点没有命中警报。

我刚刚查看了网络流量。当我单击上传按钮时(在Internet Explorer 9中),没有POST请求,但在Internet Explorer 10中有一个POST请求。

我也清除了缓存并重置了浏览器设置。但问题仍然存在。


你是指这个插件吗?鉴于 jQuery 插件的数量众多,提供一个链接总是很有帮助的。该链接上的 API 文档说明您可以使用与原始的 jQuery $.ajax() 方法相同的选项,其中包括一个 error 函数回调选项。您尝试设置并查看响应、状态和错误消息(作为错误回调函数的参数)了吗? - ajp15243
是的,我正在使用那个插件,会在我的问题中更新相关链接。我也已经更新了我的问题,包括“错误”部分。 - painotpi
IE开发工具控制台有没有任何错误? - Strelok
没有错误,但奇怪的是,我刚刚查看了网络流量,在我点击“上传”按钮时(在IE9中),没有POST请求,而在IE10中有POST请求。 - painotpi
你在这方面有任何进展吗?我今天也遇到了同样的问题。我确定除非您向选项对象提供“iframeSrc”键,否则IE<10中没有网络活动。然而,在进行了大量分析之后,发现该活动只是创建一个iframe并调用提供的src url。实际上没有POST请求,但是'complete'回调被调用... - cmw
3个回答

1

badZoke,我昨天和今天大部分时间都遇到了同样的问题,最终找出了引起问题的原因(在我的情况下)。这可能对你的情况有所帮助:

当表单当前不在DOM中时,Internet Explorer对表单提交有限制。在我的情况下,用户与模态弹出窗口中的按钮交互(该窗口还包含表单)。当他们单击时,表单将从DOM中删除(但仍可通过js var访问),并替换为加载栏。然后我调用 myForm.ajaxSubmit(options); ,在IE<10中尝试将该表单提交到临时的<iframe/>。除非表单在DOM中,否则不允许。

如果您上面的代码是对您实际场景的简化,并且您正在做类似于我所做的事情,那么这可能是您的问题。祝你好运。


0
第一步是查看是否调用了error回调函数:
var options = {
    beforeSubmit: function (formData, jqForm, options) {
        $(".loaderImage").show();
        return true;
    },
    success: function (responseText, statusText, xhr, $form) {
        $("#result").html(responseText);
    },
    error: function(xhr) { alert(xhr.responseText); }
 }; 

$("#AjaxFileUpload").ajaxSubmit(options);

0

您的代码在我的电脑上运行良好,我使用的是Internet Explorer 9。也许问题不在这里。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接