Перейти к публикации

Не срабатывает запрос данных по ajax


Рекомендованные сообщения

Сайт: http://prompostavka.kz
Я новичок в php, а также ajax-любознательный.

Пишу локально модуль, возникла проблема, которую я не могу разобрать.
В шаблоне делается ajax запрос к файлу select.php на выборку из базы

<script>
$('document').ready(function() {
    $('#country').change(function() {
        var country_id = this.value;
        $.ajax({
            type: "POST",
            url: "/engine/ajax/select.php",
            data: { country_id: country_id },
            cache: false,
            success: function(result){
                $('#region').html(result);
            }
        });
    });    
    $('#region').change(function() {
        var region_id = this.value;
        $.ajax({
            type: "POST",
            url: "/engine/ajax/select.php",
            data: { region_id: region_id },
            cache: false,
            success: function(result){
                $('#city').html(result);
            }
        });
    });
});
</script>

<form action="" method="POST">
 <select id="country">
  <option value="0">выберите страну</option>
  <option value="1">страна1</option>
  <option value="2">страна2</option>
  <option value="3">страна3</option>
 </select>
 <select id="region"></select>
 <select id="city"></select>
</form>

Содержимое файла select.php

if(!defined('DATALIFEENGINE')) {
    header( "HTTP/1.1 403 Forbidden" );
    header ( 'Location: ../../' );
    die( "Hacking attempt!" );
}
if(!empty($_POST["country_id"])){ 
    $country_id = $_POST['country_id'];
    $result = $db->query("SELECT * FROM " . USERPREFIX . "_geo_regions WHERE country_id='$country_id'");
    if($result->num_rows > 0){ 
        echo '<option value="">выберите регион</option>';
        while ($row = $db->get_row( $result )) {
            echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>';
        }
    }else{ 
        echo '<option value="">регионы отсутствуют</option>'; 
    }
} else if (!empty($_POST["region_id"])){
    $region_id = $_POST['region_id'];
    $result = $db->query("SELECT * FROM " . USERPREFIX . "_geo_cities WHERE region_id='$region_id'");
    if($result->num_rows > 0){ 
        echo '<option value="">выберите город</option>';
        while ($row = $db->get_row( $result )) {
            echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>';
        }
    }else{ 
        echo '<option value="">города отсутствуют</option>'; 
    } 
}

В итоге ajax запрос дублирует код всей html страницы и вставляет в <select>
Насколько я понимаю это происходит из-за кода в начале файла

if(!defined('DATALIFEENGINE')) {
    header( "HTTP/1.1 403 Forbidden" );
    header ( 'Location: ../../' );
    die( "Hacking attempt!" );
}

Если его убрать, то ничего не происходит.
Подскажите как реализовать данное решение?

Ссылка на сообщение
Поделиться на других сайтах
24 минуты назад, Sinatra сказал:

Содержимое файла select.php

а с какого перепугу он тогда вызывается напрямую, а не через контроллер

24 минуты назад, Sinatra сказал:

url: "/engine/ajax/select.php",

если минуете контроллер - где подключение к базе и т.п.?.....

Изменено пользователем MSK
Ссылка на сообщение
Поделиться на других сайтах
url: "/engine/ajax/controller.php?mod=select",
$db->query("SELECT * FROM " . USERPREFIX . "_geo_regions WHERE country_id={$country_id}");

Тип поля country_id в БД какой? если int то

 $country_id = intval($_POST['country_id']);

 

 

33 минуты назад, Sinatra сказал:

Насколько я понимаю это происходит из-за кода в начале файла

нет

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...