Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
C# 为什么ASP.NET WEB API没有返回200 Ok作为我在ajax中的响应_C#_Asp.net_Ajax_Asp.net Web Api - Fatal编程技术网

C# 为什么ASP.NET WEB API没有返回200 Ok作为我在ajax中的响应

C# 为什么ASP.NET WEB API没有返回200 Ok作为我在ajax中的响应,c#,asp.net,ajax,asp.net-web-api,C#,Asp.net,Ajax,Asp.net Web Api,我有一个asp.net web api来检查用户是否登录。当我调试时,我从api控制器得到200 OK响应,但当我在fiddler中检查时,我得到两个200 OK响应。一个是空的,没有假定其返回的对象,另一个响应包含带有该对象的响应 控制器代码 [HttpPost] [Route("api/BTS_Admin/Login")] public HttpResponseMessage AdminLogin(Admin admin) { Admin respo

我有一个asp.net web api来检查用户是否登录。当我调试时,我从api控制器得到200 OK响应,但当我在fiddler中检查时,我得到两个200 OK响应。一个是空的,没有假定其返回的对象,另一个响应包含带有该对象的响应

控制器代码

 [HttpPost]
    [Route("api/BTS_Admin/Login")]
    public HttpResponseMessage AdminLogin(Admin admin)
    {
        Admin response = admin.LoginCheck();
        if (response != null)
        {
            return Request.CreateResponse(HttpStatusCode.OK, response);
        }
        else
        {
            return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Login Failed");
        }
    }
另外,当我想从ajax获得成功响应时,我会在ajax调用的错误部分得到返回的响应

Ajax调用代码

                $('#btnLogin').click(function () {
                $.ajax({
                url: 'http://localhost:61468/api/BTS_Admin/Login',
                method: 'POST',
                dataType: JSON,
                contentType: 'application/json',
                data: JSON.stringify({
                    Email: $('#txtUsername').val(),
                    Password: $('#txtPassword').val(),
                }),
                success: function (response) {
                    //localStorage.setItem('accessToken', response.access_token);
                    //localStorage.setItem('userName', response.userName);
                    window.location.href = "Data.html";

                 },
                 error: function (jqXHR) {
                    $('#divErrorText').text(jqXHR.responseText);
                    $('#divError').show('fade');

                }

            });
注意:这是我得到回复的地方

                    error: function (jqXHR) {
                    $('#divErrorText').text(jqXHR.responseText);
                    $('#divError').show('fade');
试试这个:

[HttpPost]
[Route("api/BTS_Admin/Login")]
public IHttpActionResult AdminLogin(Admin admin)
{
    Admin response = admin.LoginCheck();
    return Ok(response);
}
在ajax请求检查中返回值:

            $('#btnLogin').click(function () {
            $.ajax({
            url: 'http://localhost:61468/api/BTS_Admin/Login',
            method: 'POST',
            dataType: JSON,
            contentType: 'application/json',
            data: JSON.stringify({
                Email: $('#txtUsername').val(),
                Password: $('#txtPassword').val(),
            }),
            success: function (response) {
                if(response){
                //Do somethig
                  window.location.href = "Data.html";
                }else{
                    $('#divErrorText').text(jqXHR.responseText);
                    $('#divError').show('fade');               
                }
             },
             error: function (jqXHR) {
                alert('Error');
            }
        });

当您在控制器中设置响应状态代码not 200OK时,ajax会认为这是一个错误,因此会触发错误回调。

您会得到什么响应?您是否尝试调试代码并检查服务器代码是否正常工作?当我在fiddler上检查时,服务器代码返回200 Ok状态。但我得到了小提琴手的两个回应。一个有200个Ok响应,我的对象,另一个有200个Ok响应,没有对象。
btnLogin
是一个普通按钮还是提交按钮?可能您使用提交按钮,单击它后,您的Ajax代码将数据发送到服务器,同时刷新页面。这可能是导致此问题的原因之一。然后尝试只使用表单发送数据,而不使用Ajax。您是否在控制台中看到类似于
XMLHttpRequest无法加载的错误http://localhost:61468/api/BTS_Admin/Login. 请求的资源上不存在“Access Control Allow Origin”标题。
?我尝试了您的解决方案,但仍然收到相同的错误。感谢各位,我刚刚让它正常工作。我将数据类型从JSON更改为“JSON”。数据类型:JSON,text。。它是来自服务器的数据的平均返回类型。
            $('#btnLogin').click(function () {
            $.ajax({
            url: 'http://localhost:61468/api/BTS_Admin/Login',
            method: 'POST',
            dataType: JSON,
            contentType: 'application/json',
            data: JSON.stringify({
                Email: $('#txtUsername').val(),
                Password: $('#txtPassword').val(),
            }),
            success: function (response) {
                if(response){
                //Do somethig
                  window.location.href = "Data.html";
                }else{
                    $('#divErrorText').text(jqXHR.responseText);
                    $('#divError').show('fade');               
                }
             },
             error: function (jqXHR) {
                alert('Error');
            }
        });