首页 > 解决方案 > 在 ASP.NET 中,当 HttpStateCode 为 200 时,ajax GET 响应为空

问题描述

我试图在 ASP.NET 项目中使用 ajax GET 请求获取 Logged User 信息。在浏览器中,响应代码为 200,但我得到“空”响应。这是我尝试过的一些代码。

    function display(json) {
        console.log(json);
    }
    var config = {
        "async": true,
        "crossDomain": true,
        "url": ApiBaseUrl + "GetUserDetail",
        "method": "GET",
        "headers": headers,
        "contenttype": "application/json; charset=utf-8",
        success: display,
    };

    $.ajax(config).done(function (response) {
        if (response) {
            console.log(response);
        }

        console.log("No Data");
    });

后端控制器代码是:

        [Route("GetUserDetail")]
        [HttpGet()]
        public IHttpActionResult Get()
        {
            try
            {
                var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;
                string email = identity.Claims.Where(c => c.Type == ClaimTypes.Email)
                               .Select(c => c.Value).SingleOrDefault();
                IBOAccount _accountBO = IOContainer.Get<IBOAccount>();
                var _registeredUser = "response";
                return Ok(_registeredUser);
            }
            catch (Exception)
            {
                throw;
            }
        }

怎么了?cookie中似乎没有保存令牌信息。

标签: jqueryasp.netasp.net-mvc

解决方案


如果您使用的是 ASP.NET MVC 5.2(除 ASP.NET Core 1.X、2.X 以外的任何版本),则需要明确允许您的 get 请求通过JsonRequestBehavior属性返回 JSON。因此,您的退货声明可能类似于:

return Json(_registeredUser, JsonRequestBehavior.AllowGet);

如果您使用的是 ASP.NET Core,那么我可能会猜测您的控制器中发生了一些异常。


推荐阅读