Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   infinite scroll (https://javascript.ru/forum/jquery/18446-infinite-scroll.html)

Евген123321 01.07.2011 05:25

infinite scroll
 
Народ помогите! второй день не могу победить...

Нашел пример реализации вечного скрорлла: http://code.msdn.microsoft.com/VBASPN...=417319407
(То что мне нужно- тянуть данные из xml файла)
Но в нем при прокрутке на страницу вываливаются сразу все данные из xml, при следеющей прокрутке процесс повторяется... Мне же нужно чтобы допустим при первой прокрутке вываливалось первые 10 записей, при второй- следующие 10 записей... и так до конца файла.

код код страницы default.aspx:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
     <link rel="stylesheet" href="Styles/Site.css" type="text/css" />
    <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
        $(document).ready(function () {

            function lastPostFunc() {
                $('#divPostsLoader').html('<img src="images/bigLoader.gif">');

                //send a query to server side to present new content
                $.ajax({
                    type: "POST",
                    url: "Default.aspx/Foo",
                    data: "{}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {

                        if (data != "") {
                            $('.divLoadData:last').after(data.d);
                        }
                        $('#divPostsLoader').empty();
                    }

                })
            };

            //When scroll down, the scroller is at the bottom with the function below and fire the lastPostFunc function
            $(window).scroll(function () {
                if ($(window).scrollTop() == $(document).height() - $(window).height()) {
                    lastPostFunc();
                }
            });

        });
    </script>

</head>
<body>
    <form id="form1" runat="server">
   <div style="height: 900px">
        <h1>
            Simply scroll down to see new content loading...<asp:Label ID="Label1" 
                runat="server" Text="1"></asp:Label>
        </h1>
    </div>
    <div class="divLoadData">
    </div>
    <div id="divPostsLoader">
    </div>
    </form>
</body>
</html>


Код default.aspx.vb:
Код:

Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.Services
Imports System.Data
Imports System.Text
Imports System.Xml
Partial Class _Default
    Inherits System.Web.UI.Page

 

    <System.Web.Services.WebMethod()> _
    Public Shared Function Foo() As String
        Dim doc As New XmlDocument
        Dim nik As String
        Dim getPostsText As New StringBuilder()
        doc.Load("C:\message_in.xml")
        For i = 1 To 5
            nik = doc.SelectNodes("/base/soobshenie[" & i & "]/nik")(0).InnerText

            getPostsText.AppendFormat("<br>" & nik & "<br>")


        Next
        Return getPostsText.ToString()
    End Function

 
 
End Class


Aetae 01.07.2011 09:34

Значит сделайте так, чтоб сервер отдавал по 10 записей.

Евген123321 01.07.2011 09:54

в примере выше он отдает 5 записей, но при каждом скролле эти записи повторяются(с 1 по 5 записи в xml), а как сделать чтоб он понимал что первые 5 записей он уже отдал, и при следующем скролле появились уже с 5 по 10 записи. Пробовал в скрипте добавить параметр страниц( url: "Default.aspx/Foo?page=1",)... где page менялось бы от 1 до ....n, но из за записи "<System.Web.Services.WebMethod()> _" я не могу получить параметр "page"

Евген123321 01.07.2011 14:05

Другой вопрос
при приведенном ниже коде все работает на ура
<script type="text/javascript">
        $(document).ready(function () {

            function lastPostFunc() {
                $('#divPostsLoader').html('<img src="images/bigLoader.gif">');

                //send a query to server side to present new content
                $.ajax({
                    type: "POST",
                    url: "Default.aspx/Foo",
                    data: "{}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {

                        if (data != "") {
                            $('.divLoadData:last').after(data.d);
                        }
                        $('#divPostsLoader').empty();
                    }

                })
            };

            //When scroll down, the scroller is at the bottom with the function below and fire the lastPostFunc function
            $(window).scroll(function () {
                if ($(window).scrollTop() == $(document).height() - $(window).height()) {
                    lastPostFunc();
                }
            });

        });
    </script>


Но не работает при добавлении вместо data: "{}", строку data: 'number='+scrollEngine.number+'&count='+scrollEngi ­ne.count,

В чем заключается ошибка?


Часовой пояс GMT +3, время: 15:56.