Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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 在IE中使用jQuery.ajax发送多部分/表单数据_Javascript_Jquery_Internet Explorer - Fatal编程技术网

Javascript 在IE中使用jQuery.ajax发送多部分/表单数据

Javascript 在IE中使用jQuery.ajax发送多部分/表单数据,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,有没有办法在Internet Explorer中执行以下解决方案?(IE7及以上) 链接: 解决方案代码在每个浏览器中都非常有效,但IE除外。不,您不能使用jQuery.ajax上传文件,不幸的是,IE不支持FormData 查看通过ajax上传文件的步骤。您还可以使用通过ajax上传文件。不幸的是,IE还不支持FormDataAPI。但是,您可以使用任意数量的jQuery AJAX表单post插件实现类似的功能,例如。尝试如下设置表单属性: $(“#yourformid”).attr(“enc

有没有办法在Internet Explorer中执行以下解决方案?(IE7及以上)

链接:


解决方案代码在每个浏览器中都非常有效,但IE除外。

不,您不能使用
jQuery.ajax
上传文件,不幸的是,IE不支持
FormData


查看通过ajax上传文件的步骤。您还可以使用通过ajax上传文件。

不幸的是,IE还不支持
FormData
API。但是,您可以使用任意数量的jQuery AJAX表单post插件实现类似的功能,例如。

尝试如下设置表单属性:

$(“#yourformid”).attr(“enctype”,“多部分/表单数据”).attr( “编码”、“多部分/表格数据”)


或者尝试寻找现成的jquery上传插件

我也遇到了这个问题,它可能对需要的人有用。 FormData仅在IE10之后才受支持。错误是因为您无法在旧浏览器中绑定输入字段,就像在使用FormData的现代浏览器中一样。 你不能在IE中通过AJAX上传文件。它们是两种可选的方式

  • 使用Uploadify jQuery插件之类的插件通过
    AJAX您还可以使用jQuery表单插件来

  • 另一种方法是可以使用iframe

这是密码

  if(!isAjaxUploadSupported()){ //IE fallfack
            var iframe = document.createElement("<iframe name='upload_iframe_myFile' id='upload_iframe_myFile'>");
            iframe.setAttribute("width", "0");
            iframe.setAttribute("height", "0");
            iframe.setAttribute("border", "0");
            iframe.setAttribute("src","javascript:false;");
            iframe.style.display = "none";

            var form = document.createElement("form");
            form.setAttribute("target", "upload_iframe_myFile");
            form.setAttribute("action", "fileupload.aspx"); //change page to post
            form.setAttribute("method", "post");
            form.setAttribute("enctype", "multipart/form-data");
            form.setAttribute("encoding", "multipart/form-data");
            form.style.display = "block";

            var files = document.getElementById("myFile");//Upload Id
            form.appendChild(files);
            $conv("#container_myFile").html("Uploading...");

            document.body.appendChild(form);
            document.body.appendChild(iframe);
            iframeIdmyFile = document.getElementById("upload_iframe_myFile");

            // Add event...
            var eventHandlermyFile = function () {
                if (iframeIdmyFile.detachEvent) 
                    iframeIdmyFile.detachEvent("onload", eventHandlermyFile);
                else 
                    iframeIdmyFile.removeEventListener("load", eventHandlermyFile, false);

                response = getIframeContentJSON(iframeIdmyFile);

            }

            if (iframeIdmyFile.addEventListener) 
                iframeIdmyFile.addEventListener("load", eventHandlermyFile, true);
            if (iframeIdmyFile.attachEvent) 
                iframeIdmyFile.attachEvent("onload", eventHandlermyFile);

            form.submit();

            return;
        }
        ////var data = new FormData();
        //// code go here(for modern browsers)


        function isAjaxUploadSupported(){
                var input = document.createElement("input");
                input.type = "file";

                return (
                    "multiple" in input &&
                        typeof File != "undefined" &&
                        typeof FormData != "undefined" &&
                        typeof (new XMLHttpRequest()).upload != "undefined" );
        }
        function getIframeContentJSON(iframe){
                //IE may throw an "access is denied" error when attempting to access contentDocument on the iframe in some cases
                try {
                    // iframe.contentWindow.document - for IE<7
                    var doc = iframe.contentDocument ? iframe.contentDocument: iframe.contentWindow.document,
                        response;

                    var innerHTML = doc.body.innerHTML;
                    //plain text response may be wrapped in <pre> tag
                    if (innerHTML.slice(0, 5).toLowerCase() == "<pre>" && innerHTML.slice(-6).toLowerCase() == "</pre>") {
                        innerHTML = doc.body.firstChild.firstChild.nodeValue;
                    }
                    response = eval("(" + innerHTML + ")");
                } catch(err){
                    response = {success: false};
                }

                return response;
            }
if(!isAjaxUploadSupported()){//IE fallfack
var iframe=document.createElement(“”);
iframe.setAttribute(“宽度”、“0”);
iframe.setAttribute(“高度”、“0”);
iframe.setAttribute(“边框”、“0”);
setAttribute(“src”,“javascript:false;”);
iframe.style.display=“无”;
var form=document.createElement(“表单”);
form.setAttribute(“target”,“upload_iframe_myFile”);
form.setAttribute(“action”、“fileupload.aspx”);//将页面更改为post
form.setAttribute(“方法”、“帖子”);
setAttribute(“enctype”、“多部分/表单数据”);
setAttribute(“编码”、“多部分/表单数据”);
form.style.display=“block”;
var files=document.getElementById(“myFile”);//上传Id
表.追加子项(文件);
$conv(“#container_myFile”).html(“上传…”);
文件.正文.附件(表格);
document.body.appendChild(iframe);
iframeIdmyFile=document.getElementById(“upload_iframe_myFile”);
//添加事件。。。
var eventHandlermyFile=函数(){
if(iframeIdmyFile.detachEvent)
detachEvent(“onload”,eventHandlermyFile);
其他的
iframeIdmyFile.removeEventListener(“加载”,eventHandlermyFile,false);
response=getIframeContentJSON(iframeIdmyFile);
}
if(iframeIdmyFile.addEventListener)
iframeIdmyFile.addEventListener(“加载”,eventHandlermyFile,true);
if(iframeIdmyFile.attachEvent)
iframeIdmyFile.attachEvent(“onload”,eventHandlermyFile);
表单提交();
返回;
}
////var data=new FormData();
////代码转到此处(适用于现代浏览器)
函数isAjaxUploadSupported(){
var输入=document.createElement(“输入”);
input.type=“文件”;
返回(
输入中的“多个”&&
文件类型!=“未定义”&&
FormData的类型!=“未定义”&&
typeof(新的XMLHttpRequest()).upload!=“未定义”);
}
函数getIframeContentJSON(iframe){
//在某些情况下,IE在尝试访问iframe上的contentDocument时可能会抛出“访问被拒绝”错误
试一试{

//iframe.contentWindow.document-对于IE,IE<10不支持将其用于多部分/格式数据
FormData
。只有IE10+支持文件上载?更新,截至今天,Uploadify声称它与IE<10不兼容。无论如何,+1用于建议JQuery Form PluginNerHTML和eval极有可能导致XSS安全漏洞看看这个