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”修复了这个问题。