Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 Jquery文件上载在IE中不起作用_Javascript_Jquery_Internet Explorer_File_Upload - Fatal编程技术网

Javascript Jquery文件上载在IE中不起作用

Javascript Jquery文件上载在IE中不起作用,javascript,jquery,internet-explorer,file,upload,Javascript,Jquery,Internet Explorer,File,Upload,我制作了一个简单的插件,用于使用隐藏的iframe上传图像。本质上,它用一个链接替换文件对话框,单击该链接将启动文件对话框,并在选择文件后自动上载 这在Chrome、Safari和Firefox中非常有效。不幸的是,包括9在内的所有IE版本都拒绝提交该文件。文件对话框显示得很好,如果我警告该值,它将显示所选文件,但提交事件显然不会触发。如果我使用“实际文件”对话框选择该文件,那么它将按预期工作,甚至在不点击“提交”按钮或任何操作的情况下发送该文件 包含的只是做事情的相关代码,显然还有jQuery

我制作了一个简单的插件,用于使用隐藏的iframe上传图像。本质上,它用一个链接替换文件对话框,单击该链接将启动文件对话框,并在选择文件后自动上载

这在Chrome、Safari和Firefox中非常有效。不幸的是,包括9在内的所有IE版本都拒绝提交该文件。文件对话框显示得很好,如果我警告该值,它将显示所选文件,但提交事件显然不会触发。如果我使用“实际文件”对话框选择该文件,那么它将按预期工作,甚至在不点击“提交”按钮或任何操作的情况下发送该文件

包含的只是做事情的相关代码,显然还有jQuery插件等的代码

                   var self = this;

        var randId = Math.floor(Math.random()*1001);

        var iframeHTML = '<iframe id="iframe'+randId+'" name="iframe'+randId+'" style="visibility:hidden;height:1px;width:1px;"></iframe>';
        var formHTML = '<form method="post" enctype="multipart/form-data" encoding="multipart/form-data" action="'+settings.action+'" target="iframe'+randId+'" id="form'+randId+'" >';
        var inputHTML = '<input type="file" name="upload" id="input'+randId+'"><input type="submit" id="submit'+randId+'" value="Submit" />';

        $(this).append(iframeHTML+formHTML+inputHTML+'</form>');
        $('input#input'+randId).change(function() {
            if($(this).val() != '') {
                if(settings.spinner != '') {
                    $(settings.spinner).show('fade');
                }
            }
        $('form#form'+randId).submit();
        });

        $(settings.activator).click(function(e) {
            e.preventDefault();
            $('input#input'+randId).trigger('click');
        });     
settings.activator是用于打开文件对话框的链接

我需要一些IE特定的东西来工作吗?我知道这应该是可能的,因为其他脚本可以做到这一点,但我不太热衷于使用它们,因为对于我的需求,它们中的大多数都太庞大,功能太多。我也不想使用任何基于Flash的解决方案


编辑:目前我只是通过在IE中显示文件输入框并让适当的浏览器执行上述操作来解决这个问题。我仍然想知道,除了IE链接hack顶部的不透明隐藏输入框之外,是否还有实际的解决方案。

我记得看到IE7忽略表单提交了目标隐藏iFrame。尝试将iframe移出视图,而不是实际隐藏它:

.iframe_hidden {
    width: 0;
    height: 0;
    position: relative;
    left: -9999px;
}

似乎没用。即使iframe可见,它也不会提交。似乎即使我把iframe从等式中去掉,它也拒绝提交,所以它一定是别的东西。谷歌搜索同一个东西很久了,没有解决方案。我遇到了完全相同的问题;似乎IE只是忽略了提交功能,如果文件不是通过手动选择的&直接单击输入字段上的“浏览”/“选择文件”按钮上传失败。执行submit只是从输入中删除文件名,就好像它得到了无效数据一样。可能与浏览器安全性和/或对象上下文错误有关。注意:使用jQuery 1.6.1 ATM P.S.2,IE的安全设置“包含本地目录路径…”已经尝试过,但问题仍然存在。