Перейти к содержанию
Форум поддержки пользователей VamShop

Помогите разобраться с кодом зависимых списков на ajax


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

Дело в том что есть код который прекрасно работает на денвере:


<?php
require_once('city.php'); // подключаем список с городами

$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';

// возвращаем список городов
if ($action == 'getCity')
{
    if (isset($city[$_GET['region']]))
    {
        echo json_encode($city[$_GET['region']]); // возвраащем данные в JSON формате;
    }
    else
    {
        echo json_encode(array('Выберите область'));
    }

    exit;
}


?>
<!DOCTYPE html>
<html>
<head>
    <title>Зависимые списки</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
    // <![CDATA[
        function loadCity(select)
        {
            var citySelect = $('select[name="city"]');
            citySelect.attr('disabled', 'disabled'); // делаем список городов не активным
           
            // послыаем AJAX запрос, который вернёт список городов для выбранной области
            $.getJSON('index.php', {action:'getCity', region:select.value}, function(cityList){
               
                citySelect.html(''); // очищаем список городов
               
                // заполняем список городов новыми пришедшими данными
                $.each(cityList, function(i){
                    citySelect.append('<option value="' + i + '">' + this + '</option>');
                });
               
                citySelect.removeAttr('disabled'); // делаем список городов активным
               
            });
        }
    // ]]>
    </script>
</head>
<body>
  <select name="region" onchange="loadCity(this)">
<option value="Москва и Московская обл.">Москва и Московская обл.</option>
<option value="Санкт-Петербург и область">Санкт-Петербург и область</option>
</select>
       
<select name="city" disabled="disabled">
<option>Выберите область</option>
</select>
</body>
</html>

[/code] Также есть файл с масcивом city.php:
[code]
<?php

$city = array (
  'Москва и Московская обл.' => array (
    0 => 'Москва',
    1 => 'Абрамцево',
    2 => 'Алабино',
    3 => 'Апрелевка',
    4 => 'Архангельское',
    5 => 'Ашитково',
    6 => 'Байконур',
    7 => 'Бакшеево',
    8 => 'Балашиха',
    9 => 'Барыбино',
  ),
  'Санкт-Петербург и область' => array (
    0 => 'Санкт-Петербург',
    1 => 'Александровская',
    2 => 'Бокситогорск',
    3 => 'Большая Ижора',
    4 => 'Будогощь',
    5 => 'Вознесенье',
    6 => 'Волосово',
    7 => 'Волхов',
    8 => 'Всеволожск',
    9 => 'Выборг',
  ),

  'Алтайский край' => array (
    0 => 'Акташ',
    1 => 'Акутиха',
    2 => 'Алейск',
    3 => 'Алтайский',
    4 => 'Баево',
    5 => 'Барнаул',
    6 => 'Белово (Алтайский край)',
    7 => 'Белокуриха',
    8 => 'Белоярск',
    9 => 'Бийск',
    10 => 'Благовещенск',
  ),

);
?>
Но вот прицепить к движку это не могу, делаю так в боксе пишу это:

{literal}
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <style>
        body {font-family:Verdana; font-size:12px;}
    </style>
    <script type="text/javascript">
    // <![CDATA[
        function loadCity(select)
        {
            var citySelect = $('select[name="city"]');
            citySelect.attr('disabled', 'disabled'); // делаем список городов не активным
           
            // послыаем AJAX запрос, который вернёт список городов для выбранной области
            $.getJSON('index.php', {action:'getCity', region:select.value}, function(cityList){
               
                citySelect.html(''); // очищаем список городов
               
                // заполняем список городов новыми пришедшими данными
                $.each(cityList, function(i){
                    citySelect.append('<option value="' + i + '">' + this + '</option>');
                });
               
                citySelect.removeAttr('disabled'); // делаем список городов активным
               
            });
        }
    // ]]>
    </script>
{/literal}


<select name="region" onchange="loadCity(this)">
<option value="Москва и Московская обл.">Москва и Московская обл.</option>
<option value="Санкт-Петербург и область">Санкт-Петербург и область</option>
</select>
       
        <select name="city" disabled="disabled">
            <option>Выберите область</option>
        </select>


[/code] А в index.php в корне добавляю это:
[code]require_once('city.php');



$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';

// возвращаем список городов
if ($action == 'getCity')
{
    if (isset($city[$_GET['region']]))
    {
        echo json_encode($city[$_GET['region']]); // возвраащем данные в JSON формате;
    }
    else
    {
        echo json_encode(array('Выберите область'));
    }

    exit;
}

так же кладу файл city.php в корень но скрипт работать не хочет.

Вопрос в следующем как сделать так чтобы все заработало?

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