c# - 调用从 AJAX 返回 IHttpActionResult 的 GET 方法?

标签 c# ajax asp.net-web-api asp.net-web-api2 asp.net-web-api-routing

AJAX 与返回 IQueryableGetAll 方法配合良好,但与 GetOne 配合使用时,它不起作用并返回“undefined”浏览器, 这是 ApiController 类中的 Get 方法:

[ResponseType(typeof(Author))]
public IHttpActionResult GetAuthor(int id)
{
    Author author = db.Authors.Find(id);
    if (author == null)
    {
        return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, $"Author with {id} not found."));
    }

    return ResponseMessage(Request.CreateResponse(HttpStatusCode.OK, author));
}

这是 AJAX 函数:

$.ajax({
    type: 'GET',
    url: 'api/Authors',
    dataType: 'json',
    data:{id:'1'},
    success: function (data) {
        list.empty();
        $.each(data, function (index, val) {
            var qualifier = val.AuthorId + ' - ' + val.Name;
            list.append('<li>'+qualifier+'</li>')
        });
    }
});

这是因为 GetAuthor 返回 IHttpActionResult 吗?

获取作者:

public IQueryable<Author> GetAuthors()
{
    return db.Authors;
}

控制台窗口的屏幕截图:

enter image description here

最佳答案

Is this because GetAuthor returns IHttpActionResult

不! 问题在于您如何处理从请求返回的响应。

示例操作返回单个作者,但在客户端上被视为集合。

function GetData(id) {
    var url = 'api/Authors';
    if(id) url = url + '?id=' + id;
    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'json',
        success: function (data) {
            list.empty();
            if (!jQuery.isArray(data)) data = [data]; // If a single object is returned, wrap it in an array
            $.each(data, function (index, val) {
                var qualifier = val.AuthorId + ' - ' + val.Name;
                list.append('<li>'+qualifier+'</li>')
            });
        }
    });
}

关于c# - 调用从 AJAX 返回 IHttpActionResult 的 GET 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41105649/

相关文章:

c# - 可以用 C# 中的用户输入计算年龄,但不知道为什么会这样

c# - Xamarin Android 中的 System.IO.IsolatedStorage

升级到新的 jQuery 版本后 jQuery 将不会返回数据

entity-framework - 带有 Entity Framework 的 ASP Web API Controller 非常缓慢和奇怪的结果

c# - 我必须向我的 Web API REST 方法添加显式线程吗?

c# - 简单的 SELECT WHERE LINQ 查询列表

c# - 如何在 C# 中构建具有未指定数量参数的方法

javascript - JS - 为从 AJAX 调用传递的每个元素加载动画

javascript - 提交表单时保持选中复选框

c# - 用于将 Windows 应用程序连接到 MVC 4 的 Web 服务或 Web API?