自分の質問in this postに答えようとしています。基本的に、複数のカテゴリにチェックボックスがたくさんあります。クリックすると、Ajaxを使用して結果をフィルタリングし、同じ画面に表示します。私はそれを段階的に構築し、単一のカテゴリー・フィルターでAjaxが正しく機能するようにすることから始めます。
私のAjaxは次のようになります:
$('#filters input').change(function() {
var value = $(this).val();
$.ajax("ajax.twig?search=" + value, {
type: 'get',
dataType: 'html',
success : function(html) {
$("#ajaxresults").html(html)
},
error: function(xhr, status, error) {
alert(xhr.responseText);
}
});
});
ajax.twigは次のようになります:
{% set searchTerm = craft.request.getParam('search') %}
{% set galleries = craft.entries.section("gallery").colors(searchTerm) %}
{% if galleries|length %}
<div class="gallery">
<ul>
{% for gallery in galleries.all() %}
<li>
<img src="{{ gallery.image[0].url }}" alt="" />
<h2>{{ gallery.title }}</h2>
</li>
{% endfor %}
</ul>
</div>
{% endif %}
ブラウザでajax.twig?color=red
に手動でアクセスすると、期待どおりに動作し、レンダリングされた結果が表示されます。ただし、ajaxを使用するフィルターのあるページは、クエリの結果ではなくajax.twig内のコードを返すだけです。.load()と.get()も使用してみましたが、同じ結果が得られました。
誰かが私が間違っていることを知っていますか?私は何日も行き詰まっています。前もって感謝します。