Javascript 为什么我的ajax不发送上传到控制器端的图像?
我使用jQueryAjax将模型和图像一起发送到我的控制器。 这是我的表格Javascript 为什么我的ajax不发送上传到控制器端的图像?,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我使用jQueryAjax将模型和图像一起发送到我的控制器。 这是我的表格 @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "CreateUser" ,enctype = "multipart/form-data" } )) { @Html.AntiForgeryToken(); @Html.ValidationSummary(true)
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "CreateUser" ,enctype = "multipart/form-data" } ))
{
@Html.AntiForgeryToken();
@Html.ValidationSummary(true)
<fieldset>
<div class="row">
<div class="col-xs-6">
@*----FIRST NAME----*@
<label>
First Name <span class="text-red font12">*</span>
</label>
@Html.TextBoxFor(model => model.FirstName, new { @class = "form-control", id = "txtFirstName", @maxlength = "30" })
</div>
<div class="col-xs-6">
@*----LAST NAME----*@
<label>
Last Name <span class="text-red font12">*</span>
</label>
@Html.TextBoxFor(model => model.LastName, new { @class = "form-control", id = "txtLastName", @maxlength = "30" })
</div>
<div class="col-xs-6">
@*----Logo Upload----*@
<label>
Logo Uploaad <span class="text-red font12">*</span>
</label>
<div class="input-group">
<input type="file" id="FileUpload1" />
</div>
</div>
</div>
<div class="row">
<div class="col-xs-4" style="float:right;">
<input type="button" value="Save" class="btn btn-primary btn-block btn-flat" onclick="validateandcreate();" />
</div>
</div>
您需要在ajax上设置
processData:false
和contentType:false
,以便通过
您还可以将文件以外的数据添加到FormData
中
var formdata = new FormData();
formdata.append("file", fileobject);
formdata.append("model", JSON.stringify({
name: "Johny",
lastname: "Good"
}));
$.ajax({
url: '/User/Create',
method: 'post',
dataType: 'json',
contentType: false,
processData: false,
data: formdata,
success: function(data) {
alert("success");
},
error: function(err) {
alert("error");
}
});
请参见您需要在ajax上设置
processData:false
和contentType:false
,以便通过
您还可以将文件以外的数据添加到FormData
中
var formdata = new FormData();
formdata.append("file", fileobject);
formdata.append("model", JSON.stringify({
name: "Johny",
lastname: "Good"
}));
$.ajax({
url: '/User/Create',
method: 'post',
dataType: 'json',
contentType: false,
processData: false,
data: formdata,
success: function(data) {
alert("success");
},
error: function(err) {
alert("error");
}
});
请参见,但我想在一个ajax Post中传递模型(firstname,lastname)和文件数据(上传的图像)。只有当我将上传的图像发送到控制器时,上述解决方案才有效。您可以在formdata中添加任意数量的数据。将模态对象作为字符串化json附加到formdata并在服务器端对其进行解析,或者将其键值对作为单独的键值对附加到formdata中。无论你选择哪一个都有效。我更新了显示如何随文件一起发送其他数据的答案。我现在在客户端上只收到此错误。即,通过ajaxI发布时未定义fdata have used和var fdata=new FormData();虽然如此,但我想在一个ajax Post中传递模型(firstname,lastname)和文件数据(上传的图像)。只有当我将上传的图像发送到控制器时,上述解决方案才有效。您可以在formdata中添加任意数量的数据。将模态对象作为字符串化json附加到formdata并在服务器端对其进行解析,或者将其键值对作为单独的键值对附加到formdata中。无论你选择哪一个都有效。我更新了显示如何随文件一起发送其他数据的答案。我现在在客户端上只收到此错误。即,通过ajaxI发布时未定义fdata have used和var fdata=new FormData();thoughNote您还需要提供文件输入
name=“file\u Uploader”
注意您还需要提供文件输入name=“file\u Uploader”
var formdata = new FormData();
formdata.append("file", fileobject);
formdata.append("model", JSON.stringify({
name: "Johny",
lastname: "Good"
}));
$.ajax({
url: '/User/Create',
method: 'post',
dataType: 'json',
contentType: false,
processData: false,
data: formdata,
success: function(data) {
alert("success");
},
error: function(err) {
alert("error");
}
});