php ошибка скрипта: нет результатов поиска или ошибка отображается в поисковом запросе - PullRequest
0 голосов
/ 06 мая 2020

Я работаю над проектом php, и функция поиска из базы данных не возвращает никаких результатов или ошибок. Ниже приведен код функции поиска:

function searchweb() {
      console.log("click");

      //e.preventDefault();
      searchWebsite = $("#searchWebsite").val();


      if (searchWebsite == "")
        $("#searchWebsite").focus();
      else {

        console.log("else");

        $("#search").html("Searching..");
        $("#search").attr("disabled", true);

        var excat = "like";
        if ($('input[type=checkbox]').prop('checked'))
          excat = "match";


        $.post("userinput.php", {
          searchWebsite: $("#searchWebsite").val(),
          excat: excat
        }, function (data) {

          console.log("hey"+data);
          populateSearch(data);
          });
        function populateSearch(data){
          data = JSON.parse(data);

          $('#result').empty();
          $.each(data, function (key, value) {
            //console.log(data);
          $('#result').append("<tr>\
                        <td><a href='"+value.website_name+"' target='_blank'><i class='glyphicon glyphicon-search'></i></a></td>\
                        <td>"+value.website_name+"</td>\
                        <td>"+value.avg_score+"</td>\
                        <td><img class = 'imgs img-responsive center' src='../img/"+value.remark+".png' alt ='"+value.remark+"' />\
                        </td></tr>");


        });
        }



        // console.log(searchWebsite);
        $("#search").html("Search Website");
        $("#search").attr("disabled", false);


      }


    } 

Функция searchweb вызывает метод post для поиска в базе данных mysql. Я использую phpmyadmin для этого проекта. Код для функции post в файле userinput:

if(isset($_POST['searchWebsite'])){

    $searchWebsite = $_POST['searchWebsite'];
    $type = $_POST['excat'];
      $sql = "SELECT * from websites WHERE ";

      //for excact match

      if($type=="match")
         $sql.= "MATCH(tags) Against('$searchWebsite') ORDER BY avg_score DESC";
         //for tags contaionun gthose words
      else
        $sql.= "tags LIKE '%$searchWebsite%' ORDER BY avg_score DESC";


        $result = mysqli_query($db, $sql);
        if($result){
         $rr = array();
         $i=1;
        while($row = mysqli_fetch_assoc($result))
           { $rr[] = $row;
        $i=$i+1;}

        echo json_encode($rr);
        }
        else
        {
          echo "<script type='text/javascript'>alert('Error: '".mysqli_error($db).");</script>";
        }




}

1 Ответ

0 голосов
/ 06 мая 2020

Никакой ошибки не будет, так как это .post в запросе javascript call / AJAX. AJAX не будет динамически анализировать код ошибки javascript, который вы пытаетесь перехватить в запросе AJAX.

Лучше сделать что-то вроде этого:

PHP сторона:

Заменить: echo "alert ('Ошибка:'" .mysqli_error ($ db). ");";

на:

echo json_encode( [ 'error' => mysqli_error($db) ] );

Javascript Сторона: // Обратите внимание, что вам не нужно анализировать JSON, так как на стороне PHP массив ошибок был закодирован как json

if( ! $.isEmptyObject(data.error) ) {
    alert( data.error );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...