2

autobrowseというスクリプトを使用しています。これは、JSONファイルからデータをプルする無限スクロールタイプのスクリプトを表します。アイテムを数回繰り返す(ループする)ようにスクリプトを設定すると、スクリプトの作成者によるデモの例のように完全に機能します。これは、flickr jsonフィードからデータをプルする例で100に設定されているように、maxに高い値を入力することによって行われます。

しかし、結果を繰り返したくはありません。代わりに、10または20アイテムごとにロードし、json(データベース)の最後のアイテムがロードされたときに停止するようにします。しかし、JSONからアイテムを1回だけロードするために、スクリプトで「max:1」オプションを設定すると、要素の数に関係なく、すべての要素が一度に表示されます。無限のスクロールは一切ありません。

そこで、ページ下部のスクロールごとに表示するアイテムの数を設定したいと思います。たとえば10のように。

これが私のJSONファイルを生成する方法です:

<?php
$link = mysql_pconnect("localhost", "user", "pass") or die("Could not connect");
mysql_select_db("dbase") or die("Could not select database");

$arr = array();

$rs = mysql_query("SELECT * FROM bannersright ORDER BY HdOrder");

while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}

echo '{"bannersright":'.json_encode($arr).'}';

?>

これが、ビューファイルで自動参照スクリプトを呼び出す方法です。

   $(function () {

        $("#wrapper #sidebar-right").autobrowse(

            {

                url: function (offset)
                {                   
                    return "http://www.mysite.com/json.php";
                },
                template: function (response)
                {
                    var markup='';
                    for (var i=0; i<response.bannersleft.length; i++)
                    {
                        markup+='<a href="'+response.bannersleft[i].URL+'"><img src="'+response.bannersleft[i].Image+'" /></a>'
                    };
                    return markup;
                },
                itemsReturned: function (response) { return response.bannersleft.length; },
                offset: 0,
                max: 1,
                loader: '<div class="loader"></div>',
                useCache: false,
                expiration: 1
            }
        );

});

オフセット機能と関係があると思いますが、どうすればいいのかわかりません。彼らのウェブサイトにはもう1つのTwitterのデモがあります。これはこれと非常によく似ていますが、jsonを次のように呼び出します。

url: function (offset)
{
    return "http://twitter.com/status/user_timeline/ParisHilton.json?count=10&page=OFFSET&callback=?".replace(/OFFSET/, 1+Math.round(offset/10));
},

(デモが機能しなくなった理由は、TwitterがjsonフィードのAPIを変更したためです)

彼らがツイッターフィードを呼び出す方法から、ツイッターにはAPIでページを設定するオプションがあったと思います。

ですから、私の最後の質問は、JSONでページをどのように作成するかということだと思います。ページ内の要素を取得できるようにするには、json.phpファイルにどのphpコードを追加する必要がありますか?

jsonページである必要はありません。別の解決策がある場合は、それを共有してください。

4

1 に答える 1

3

mySQLリクエストとURLジェネレーターでLIMITを設定するのを忘れています:

PHP

<?php
$link = mysql_pconnect("localhost", "user", "pass") or die("Could not connect");
mysql_select_db("dbase") or die("Could not select database");

//GET page/count
$count=10;$offset=0;
if (isset($_GET['count'])) $count=$_GET['count']*1;
if (isset($_GET['page']))  $offset=$_GET['page']*$count*1;

$arr = array();

$rs = mysql_query("SELECT * FROM bannersright 
                   ORDER BY HdOrder 
                   LIMIT $offset,$count"); #<-HERE

while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}

echo '{"bannersright":'.json_encode($arr).'}';

?>

JS:

$(function () {

        $("#wrapper #sidebar-right").autobrowse(

            {

                url: function (offset)
                {                   
                    return "http://www.mysite.com/json.php?count=10&page="
                           +Math.round(offset/10); // <-- AND HERE
                },
                template: function (response)
                {
                    var markup='';
                    for (var i=0; i<response.bannersleft.length; i++)
                    {
                        markup+='<a href="'+response.bannersleft[i].URL+'"><img src="'+response.bannersleft[i].Image+'" /></a>'
                    };
                    return markup;
                },
                itemsReturned: function (response) { return response.bannersleft.length; },
                offset: 0,
                max: 1,
                loader: '<div class="loader"></div>',
                useCache: false,
                expiration: 1
            }
        );

});
于 2012-11-17T00:19:20.910 に答える