Отображать сообщение, когда в AJAX и WordPress не найдено данных - PullRequest
0 голосов
/ 17 января 2019

У меня есть фильтр формы в WordPress.

Я пытаюсь опубликовать сообщение, когда у меня нет данных, но я не могу:

 $.ajax({
    url : ajax_url,
    data : data,
    success : function(response) {
      mafs.find("#ajax_fitler_search_results").empty();
      if(response) {

        for(var i = 0 ;  i < response.length ; i++) {

          var img = null;
          if(response[i].statut == 'encours') {
            img = '//localhost:3000/app/themes/sofico2018/dist/images/icon-encours.svg'
          } 

          var html  = "<li class='cList__item'>";
          html += "      <img width='18' height='21' src='" + img + "' />";
          html += "<p class='cList__chantier'>" + response[i].title + "</p>"
          html += "          <p>Province: " + response[i].province + "</p>";
          html += "</li>";
          mafs.find("#ajax_fitler_search_results").append(html);
        }
      } else {
        alert('error');
        var html  = "<li class='no-result'>No matching movies found. Try a different filter or search keyword</li>";
        mafs.find("#ajax_fitler_search_results").append(html);
      }
    }
  });

});

Когда у меня нет соответствующих данных, я получаю ответ 200, но пустой.

Мой код PHP:

if ( $search_query->have_posts() ) {

    $result = array();

    while ( $search_query->have_posts() ) {
      $search_query->the_post();

      $cats = strip_tags( get_the_category_list(", ") );
      $result[] = array(
        "id" => get_the_ID(),
        "title" => get_the_title(),
        "statut" => get_field('statut'),
        "province" => $cats
      );
    }

    wp_reset_query();

    echo json_encode($result);

  } else {
    // no posts found
  }

Я не знаю, почему я получаю ответ 200, когда я подтверждаю, и у меня нет результата. Проблема может исходить от?

Большое спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Если вы ожидаете JSON-объект, тогда установите contentType и запросите заголовок, как указано ниже.

и вы можете попробовать jQuery.isEmptyObject (response), чтобы убедиться, что объект пуст или нет.

$.ajax({
        url:  url, 
        dataType: 'json',
        type: method type,
        data : data,
        contentType: "application/json",
        beforeSend: function (e) {
            e.setRequestHeader('Accept', 'application/json; charset=utf-8')
        },
        success: function (response) {
            if(!jQuery.isEmptyObject(response)){
                //logic
            }else{
                //No object recived from backend
            }
        },
        error: function () {
            console.log ("Failed!");
        }
    });
0 голосов
/ 17 января 2019

Попробуйте, отправив «dataType» при запросе по ajax. попробуйте это -> dataType: 'json',

$.ajax({

url : ajax_url,
data : data,
dataType: 'json',
success : function(response) {
}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...