無限スクロールを使ってdbから製品を見せたいと思っていました。Ajaxを使ったSymfonyの無限スクロール
$start=0;
$limit= 6;
$query = $repository->createQueryBuilder('classified')
->join('classified.statusId','status')
->andWhere('status.name=:status')
->setParameter('status','active')
->setFirstResult($start)
->setMaxResults($limit)
->getQuery();
$results = $query->getResult();
if ($request->isXmlHttpRequest()){
$list = $this->renderView('search-result.html.twig', [
'results' => $results
]);
$response = new JsonResponse();
$response->setData(array('classifiedList' => $list));
return $response;
}
アヤックス:
は、ここに私のコントローラである
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height()>= $(document).height()){
getmoredata();
}
})
function getmoredata() {
$.ajax({
type: "GET",
url: "{{ path('classified_list', {'type' : 'all'}) }}",
dataType: "json",
cache: false,
success: function (response) {
$('.card-deck').append(response.classifiedList);
$('#spinner').hide();
console.log(response);
},
error: function (response) {
console.log(response);
}
});
}
だから今スクロールがトリガーされたときに最初の6件の結果が繰り返し表示されている何が起こっているのか。私はこれが正しくないことを知っており、これが適切に動作するとは思わない。しかし、私が知らないことは、次のステップとなることです。 私はページギターなどを追加する必要がありますか?
ありがとうございます、ありがとうございます!
あなたはJavascriptが有効になっている場合のみ動作します行くように見える方向:例えば
symfonyのあるサーバ側で、あなたのような何かをしたい場合があります。これは、一般的にjavascriptを持たないため、検索エンジンにとっては非常に悪くなり、ランク付けが低くなります。 SEOに優しい無限のスクロールのためのhttp://infiniteajaxscroll.comを見てください。 –
@JeroenFiege infiniteajaxscroll.comにもjavascriptが必要です。 jQuery用のプラグインですね。 – Arcv
はい、ただし、プログレッシブエンハンスメントを使用し、javadcript/ajaxの依存関係がなくてもサーバー側のページネゴシエーションでは機能しません。検索エンジンは、インデックス作成のためにサーバーサイドページネーションも使用します。 –