Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 在不使用表单的情况下将文件传递给控制器,_Javascript_Jquery_Ajax_File_Asp.net Mvc 4 - Fatal编程技术网

Javascript 在不使用表单的情况下将文件传递给控制器,

Javascript 在不使用表单的情况下将文件传递给控制器,,javascript,jquery,ajax,file,asp.net-mvc-4,Javascript,Jquery,Ajax,File,Asp.net Mvc 4,伙计们,我正在尝试在不使用表单的情况下将文件从视图加载到控制器,而浏览文件时,应该使用Ajax将文件加载到控制器,这可能吗 <td>Import Excell file:</td> <td><input type="file" id="fileUpload" name="fileUpload" /></td> $('#fileUploa

伙计们,我正在尝试在不使用表单的情况下将文件从视图加载到控制器,而浏览文件时,应该使用Ajax将文件加载到控制器,这可能吗

        <td>Import Excell file:</td>                                
        <td><input type="file" id="fileUpload" name="fileUpload" /></td>



$('#fileUpload').die().live("change", function (e) {
        e.preventDefault();
        var file_name = $("#fileUpload").val();
        var fileName = $("#fileUpload").val();
        var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1);     
        var file_data = $("#fileUpload").prop("files")[0];



        var form_data = new FormData();
        form_data.append("file", file_data);
        alert("hahaha");
        $.ajax({
            type: 'POST',     
            url: '@Url.Action("ImportExcell","Uploadfile")',
            data: form_data,
            contentType: false,
            enctype: 'multipart/form-data',
            processData: false,
            success: function (response) {
                alert(response);
            }
        });
    });
导入Excell文件:
$('#fileUpload').die().live(“更改”,函数(e){
e、 预防默认值();
var file_name=$(“#fileUpload”).val();
var fileName=$(“#fileUpload”).val();
var fileExtension=fileName.substring(fileName.lastIndexOf('.')+1);
var file_data=$(“#fileUpload”).prop(“文件”)[0];
var form_data=new FormData();
表单\数据。追加(“文件”,文件\数据);
警惕(“哈哈哈”);
$.ajax({
键入:“POST”,
url:'@url.Action(“ImportExcell”,“Uploadfile”),
数据:表格数据,
contentType:false,
enctype:“多部分/表单数据”,
processData:false,
成功:功能(响应){
警报(响应);
}
});
});

下面是使用
FormData
的解决方案。这个解决方案的一个警告是,
FormData
支持只在现代浏览器中可用,所以不要指望它能在IE7-9等旧浏览器中使用

按以下方式创建控制器操作-

public JsonResult GetFormData(HttpPostedFileBase file, string Name)
{
    return Json(true);
}
那么您的HTML将是-

<script src="~/Scripts/jquery-1.10.2.min.js"></script>

<script>
    $(function () {
        $("#btnSubmit").click(function () {
            $.ajax({
                url: "/Home/GetFormData",
                type: "POST",
                data: function () {
                    var data = new FormData();
                    data.append("name", jQuery("#name").val());
                    data.append("file", jQuery("#file").get(0).files[0]);
                    return data;
                }(),
                contentType: false,
                processData: false,
                success: function (response) {                        
                },
                error: function (jqXHR, textStatus, errorMessage) {
                    console.log(errorMessage);
                }
            });
        });
    });
</script>    

Name : <input type="text" id="name" /> <br />
File: <input type="file" id="file" /> <br />
<input type="button" value="Click" id="btnSubmit" />

$(函数(){
$(“#btnsupmit”)。单击(函数(){
$.ajax({
url:“/Home/GetFormData”,
类型:“POST”,
数据:函数(){
var data=new FormData();
data.append(“name”,jQuery(“name”).val();
data.append(“file”,jQuery(“file”).get(0).files[0]);
返回数据;
}(),
contentType:false,
processData:false,
成功:功能(响应){
},
错误:函数(jqXHR、textStatus、errorMessage){
控制台日志(错误消息);
}
});
});
});
名称:
文件:
当呈现视图并输入一些信息时-

当您单击按钮时,输出将为-

<script src="~/Scripts/jquery-1.10.2.min.js"></script>

<script>
    $(function () {
        $("#btnSubmit").click(function () {
            $.ajax({
                url: "/Home/GetFormData",
                type: "POST",
                data: function () {
                    var data = new FormData();
                    data.append("name", jQuery("#name").val());
                    data.append("file", jQuery("#file").get(0).files[0]);
                    return data;
                }(),
                contentType: false,
                processData: false,
                success: function (response) {                        
                },
                error: function (jqXHR, textStatus, errorMessage) {
                    console.log(errorMessage);
                }
            });
        });
    });
</script>    

Name : <input type="text" id="name" /> <br />
File: <input type="file" id="file" /> <br />
<input type="button" value="Click" id="btnSubmit" />

可以使用
FormData
,但此解决方案可能无法在某些旧浏览器版本(如IE9)中运行。如果你只针对新的浏览器,我可以给你一个解决方案。