получение JSON в ajax, php

236
06 ноября 2021, 11:00

есть небольшой скрипт поиска сделан на php (работает и получает ответ без подключения ajax)

php скрипт

   class Search_class extends Db{
                public    function search(){
    $params =  $_POST['search'];    
    $query = $this->db->prepare("SELECT * FROM regions WHERE title LIKE ?");
    $query->bindValue(1, "%$params%", PDO::PARAM_STR);
    $query->execute();  
            $result_search = array();
        while($row = $query->fetch(PDO::FETCH_ASSOC)){
            $result_search[] = $row;
        }   
        $result_search = array('answer' => 'yes');
            return json_encode($result_search);
        }
    }
$search = new Search_class();
if( isset($_POST['search']) && $_POST['search'] ){
$res_search =   $search->search();
echo $res_search;
}

запрос ajax

$(document).ready(function() {
    $('#form').click(function(event) {
        var json; 
    var values = $("#search").val();
    event.preventDefault();
        $.ajax({
            type: 'POST',
            url:"includes.php",
            dataType : "json",
            data: {values:values},
            cache: false,
            success: function(res){ 
            json = jQuery.parseJSON(res);
                alert(json.answer);
          },
        });
    });
});

форма html

   <form  action="" method="post">
       <input id="search" name="search"/>
    <input id="form"  type="submit" class="search-go" name="go-search" value="поиск"  />
     </form>

если с ajax. то firebug во вкладке response ничего не выводит, alert тоже не выводится(совсем не выводится)

Answer 1

В Вашем JSON запросе в свойстве data передаётся строка поиска с ключом values, а на стороне PHP вы проверяете $_POST['search'], которого в теле запроса нет.

Вам следует или переименовать values в search вот так:

$.ajax({
  type: 'POST',
  url: "includes.php",
  dataType: "json",
  data: {search: values}, // вот тут вместо values - search
  cache: false,
  success: function(res) { 
    json = jQuery.parseJSON(res);
    alert(json.answer);
  },

Или, наоборот, в PHP скрипте вместо $_POST['search'] проверять наличие $_POST['values'] (и, соответственно, везде, где 'search', писать 'values'):

if( isset($_POST['values']) && $_POST['values'] ){
    $res_search = $search->search();
    echo $res_search;
}
READ ALSO
Доступ к сетевой папке из php

Доступ к сетевой папке из php

Нужно получить файлы из сетевой папки через php (web-сервер Apache+php на Windows2008 R2 Enterprise) На самом сервере я могу подключить сетевую папку, все данные...

199
Не работает mysqli_real_escape_string

Не работает mysqli_real_escape_string

Вот, где я сталкиваюсь с пробоемой:

116
Помогите советом, как подключить php sdk QIWI

Помогите советом, как подключить php sdk QIWI

Я перечитал все API QIWI, понял как создать платеж и тд но не могу понять как подключить само ядро api https://developer

96