【问题标题】:Count the number of objects returned in an Ajax Request计算 Ajax 请求中返回的对象数
【发布时间】:2018-10-23 10:47:40
【问题描述】:

我的 ajax 请求返回一个 IEnumerable UpcomingGigs,我想计算每个请求返回了多少 Gig。我对此进行了各种尝试,但是每次尝试也包括属性值的计数,因此不是准确的结果。

Console.log(data.Length); var count=Object.keys(data).length;

ajax 数据响应:

    2021 年 8 月 1 日 17:50:00 - 鲍勃

两个值都返回相同的错误结果。

public ActionResult FetchGigs(int skip, int take)
        {
            var upcomingGigs = _context.Gigs
                                .Include(g => g.Artist)
                                .Where(g => g.DateTime > DateTime.Now)
                                .OrderBy(d => d.DateTime)
                                .Skip(skip).Take(take);

            var viewModel = new GigsViewModel
            {
                UpcomingGigs = upcomingGigs
            };
            return PartialView("FetchGigs", viewModel);
        } 

视图模型

阿贾克斯

    public class GigsViewModel
        {
            public IEnumerable<Gig> UpcomingGigs { get; set; }
            public int TotalGigs { get; set; }
            public bool ShowActions { get; set; }
            public string Heading { get; set; }
        }

$(window).scroll(function () {
                if ($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
                    $.ajax({
                        type: "GET",
                        url: "@Url.Action("FetchGigs")",
                        data: { skip: skip, take: take },
                        success: function (data) {

                            console.log(data.GigsViewModel.gigId.);

                            $(".result").append(data);
                        }
                    })
                }
            });

【问题讨论】:

  • 您能否发布一个示例来说明您的回复是什么样的?
  • @vlaz 缓存控制:私有内容长度:72 内容类型:文本/html; charset=utf-8 日期:2018 年 5 月 13 日星期日 18:10:59 GMT 服务器:Microsoft-IIS/10.0 X-AspNet-Version:4.0.30319 X-AspNetMvc-Version:5.2 X-Powered-By:ASP.NET X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcamFtZXNcc291cmNlXHJlcG9zXEdpZ2h1YjNcR2lnaHViM1xIb21lXEZldGNoR2lncw==?=
  • 我的意思是 AJAX 调用后的响应数据 - 所以,data 变量在 success: function (data) 块中的内容。
  • @vlaz 哦,对不起!
    • 08/01/2021 17:50:00 - 鲍勃

标签: javascript jquery .net ajax asp.net-mvc


【解决方案1】:

有多种方法可以做到这一点。一种方法是为您从局部视图呈现的ul 元素添加一个数据属性,并将项目计数存储在其中。您可以使用IEnumerable.Count() 方法。

@model YourNamespace.GigsViewModel
<ul data-itemcount="@Model.UpcomingGigs.Count()">
    @foreach (var item in Model.UpcomingGigs)
    {
        <li>@item.Title</li>
    }
</ul>

现在在您的 ajax 成功事件中,使用 $.parseHTML 解析从服务器接收到的响应,然后读取数据属性值

success: function (data) {
    var html =$.parseHTML(data);
    var itemCount = $(html).data("itemcount");
    alert(itemCount);
}

另一种选择是使用find 方法获取列表项数组并获取其长度。

success: function(data) {
    var html = $.parseHTML(data);
    var itemCount = $(html).find("li").length;
    alert(itemCount);
}

我会采用第一种方法,因为我不喜欢我的浏览器做这么多工作。 (它必须循环遍历这里的 dom 元素才能获得计数)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2012-02-11
    • 2013-04-23
    • 2011-10-19
    • 2016-03-31
    • 1970-01-01
    相关资源
    最近更新 更多