C# ajax发布表单数据错误状态200 OK
我正在尝试使用C# ajax发布表单数据错误状态200 OK,c#,jquery,ajax,C#,Jquery,Ajax,我正在尝试使用Ajax上传文件 错误状态为200ok 响应文本是我的母版页HTMLcode 请求从未到达后端,因为我正在调试方法中的断点 到目前为止,我已经试过了 C#WebMethod [HttpPost] public void Upload() { for (int i = 0; i < Request.Files.Count; i++) { var file =
Ajax
上传文件
错误状态为200
ok
响应文本是我的母版页
HTML
code
请求从未到达后端,因为我正在调试方法中的断点
到目前为止,我已经试过了
C#WebMethod
[HttpPost]
public void Upload()
{
for (int i = 0; i < Request.Files.Count; i++)
{
var file = Request.Files[i];
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Uploads/"), fileName);
file.SaveAs(path);
}
}`
请尝试此代码
function getBase64(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
return reader.result;
};
reader.onerror = function (error) {
return '';
};
}
function uploadFiles() {
var files=[];
$.each(files, function (key, value) {
var x=getBase64(value)
if(!!x)
files.push(x);
});
$.ajax({
type: 'POST',
url: '/Home.aspx/Upload',
data: JSON.stringity({files:files}),
dataType: 'json',
contentType: false,
processData: false,
success: function (response) {
alert('succes!!');
},
error: function (error) {
alert("errror");
console.log(error);
}
});
}
});
[System.Web.Services.WebMethod]
public static void Upload(string[] files)
{
//Convert base64 to file format and save
}
请尝试此代码
function getBase64(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
return reader.result;
};
reader.onerror = function (error) {
return '';
};
}
function uploadFiles() {
var files=[];
$.each(files, function (key, value) {
var x=getBase64(value)
if(!!x)
files.push(x);
});
$.ajax({
type: 'POST',
url: '/Home.aspx/Upload',
data: JSON.stringity({files:files}),
dataType: 'json',
contentType: false,
processData: false,
success: function (response) {
alert('succes!!');
},
error: function (error) {
alert("errror");
console.log(error);
}
});
}
});
[System.Web.Services.WebMethod]
public static void Upload(string[] files)
{
//Convert base64 to file format and save
}
在ajax调用中,您必须删除dataType:json
,因为必须发送文件multipart/formdata
function uploadFiles() {
var formData = new FormData();
$.each(files, function (key, value) {
formData.append(key, value);
});
$.ajax({
async: false,
type: 'POST',
url: '/Home.aspx/Upload',
data: formData,
contentType: false,
processData: false,
cache: false,
timeout :5000,
success: function (response) {
alert('succes!!');
},
error: function (error) {
alert("errror");
console.log(error);
}
});
}
})) 在ajax调用中,您必须删除数据类型:json
,因为必须发送文件多部分/表单数据
function uploadFiles() {
var formData = new FormData();
$.each(files, function (key, value) {
formData.append(key, value);
});
$.ajax({
async: false,
type: 'POST',
url: '/Home.aspx/Upload',
data: formData,
contentType: false,
processData: false,
cache: false,
timeout :5000,
success: function (response) {
alert('succes!!');
},
error: function (error) {
alert("errror");
console.log(error);
}
});
}
})) 如果在Request.Files.Count
处放置断点,那么Request.Files
的值是多少?断点根本不会触发@G.hunt您是否已将属性[WebMethod()]
添加到Upload()
方法中?我尝试了[System.Web.Services.WebMethod]并且在~/App\u Start/RouteConfig.cs中遇到了相同的问题,尝试更改settings.AutoRedirectMode=RedirectMode.Permanent代码>至settings.AutoRedirectMode=RedirectMode.Off
,然后查看它的作用。如果在请求.Files.Count
处放置一个断点,则请求.Files
的值是多少?断点根本没有触发@G.hunt是否已将属性[WebMethod()]
添加到上载()
方法中?我尝试了[System.Web.Services.WebMethod]同样的问题在~/App\u Start/RouteConfig.cs中,尝试更改settings.AutoRedirectMode=RedirectMode.Permanent代码>至settings.AutoRedirectMode=RedirectMode.Off代码>,然后查看它的作用。等等,我发现了问题,我正在更新答案。代码现在可以工作了,因为我昨天在项目中使用了此代码。我必须删除数据类型:“Json”,并且不再出现错误,,但是我还有另一个问题,我的代码在上传方法上有断点,它从不触发一切都正常工作,我有更多的webmethod,一切都正常工作!我认为问题是因为web方法应该是静态的,但是当我静态该webmethod时,请求类的作用域是未定义的!!现在检查WebMethod属性和静态修饰符。在这个方法中,您不需要Request.Fileswait我得到了问题,我正在更新答案。代码现在可以工作了,因为我昨天在我的项目中使用了此代码。我必须删除数据类型:“Json”,并且不再出现错误,,但是我还有另一个问题,我的代码在上传方法上有断点,它从不触发一切都正常工作,我有更多的webmethod,一切都正常工作!我认为问题是因为web方法应该是静态的,但是当我静态该webmethod时,请求类的作用域是未定义的!!现在检查WebMethod属性和静态修饰符。在这种方法中,您不需要Request.files,这确实有效!!但我的另一个问题是CodeBehind,我在Upload方法中添加了检查点,但它从未触发过。我不知道为什么?我总是在Ajax的“error:”部分得到响应,即使服务器端代码完全没有任何问题;从上面的代码中添加“async:false”修复了这个问题。这确实有效!!但我的另一个问题是CodeBehind,我在Upload方法中添加了检查点,但它从未触发过。我不知道为什么?我总是在Ajax的“error:”部分得到响应,即使服务器端代码完全没有任何问题;从上面的代码中添加“async:false”修复了这个问题。