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ページである必要はありません。別の解決策がある場合は、それを共有してください。