Ajaxリクエストがクエリの結果ではなくコードを返す(解決済み)


1

自分の質問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()も使用してみましたが、同じ結果が得られました。

誰かが私が間違っていることを知っていますか?私は何日も行き詰まっています。前もって感謝します。

1

The path to the ajax file was wrong. I had it as:

$.ajax("templates/ajax?search=" + value, {

when it should have been

$.ajax("ajax?search=" + value, {