加载时显示消息,例如加载或mvc中没有更多数据

时间:2014-11-20 06:16:15

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

我正在我的一个视图中实现无限滚动技术,它正在运行。我使用的脚本如下所示。

<script type="text/javascript">
  $(window).scroll(function () {
    if ($(window).scrollTop() == $(document).height() - $(window).height()) {
      GetArticlesFromNextSection(true);
    }
  });
  var i = 2;
  function GetArticlesFromNextSection(scrollPage) {
    var pagenumber = i++;
    $("#divLoading").show();
    setTimeout(function () {
      $.post('/Channel/MessagePagination', {
        "pagenumber": pagenumber,
      },
      function (data) {
        if (data == "") {
          $("#divLoading").html("No More Posts");
        }
        $("#messagelist").append(data);
        $("#divLoading").hide();
      });         
    }, 1000);
    i = i;
  }
</script>

现在我需要在完全加载数据时显示不再有数据或类似内容的消息。 我给了if条件来检查

if (data == "") { $("#divLoading").html("No More Posts");}

但它不起作用。谁能告诉我会出现什么问题? 视图和控制器示例代码如下所示

查看:

@Html.AntiForgeryToken()
<div>
  @Html.ValidationSummary(true)
  <div id="messagelist">
    @{Html.RenderPartial( "mypartial",list);}
  </div>
</div>
<div id="divLoading" style="margin: 0px; padding: 0px; position: fixed; right: 0px; top: 0px; width: 100%; height: 100%; background-color: #666666; z-index: 30001; opacity: .8; filter: alpha(opacity=70);display:none">
  <p style="position: absolute; top: 30%; left: 45%; color: White;">Loading, please wait...<img src="~/images/loading.png"></p>
</div>

控制器:

public ActionResult MessagePagination(int pagenumber)
{
  var balObject = new BusinessLogic();
  int pageSize = 3;
  var MessageList = balObject.FetchMessages();
  MessageList = MessageList.Skip((pagenumber - 1) * pageSize).Take(pageSize).ToList();
  return PartialView("mypartial", MessageList);
}

2 个答案:

答案 0 :(得分:1)

你可以这样检查:

if ($.trim(data)) {
$("#messagelist").append(data);
$("#divLoading").hide();
}
else
 $("#divLoading").html("No More Posts");

或者你可以在修剪后使用length属性,如果它大于0,那么其他数据就不会出现(如果你没有更多数据从服务器返回空字符串的话):

if ($.trim(data).length) {
    $("#messagelist").append(data);
    $("#divLoading").hide();
    }
    else
     $("#divLoading").html("No More Posts");

答案 1 :(得分:0)

如果msglist计数为零,我将控制器更改为返回null。 我使用了一个警告框来显示消息,不再显示帖子。 现在它的工作。