X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Работа с переменными Javascript, работа с переменными Javascripta
linad
linad
Topic Starter сообщение 11.3.2009, 23:16; Ответить: linad
Сообщение #1


Подскажите пожалуйста, имеется 2 Selecta:
При выборе 1-го Selecta, отображается 2-й Select, и в него на основании 1-го сэлэкта считывается данные из БД и выводятся во 2-м сэлэкте!
  $a=vuvod_select('select id,BMW from select_marka');

Вместо BMW, нужно вставить переменную явыскрипт s_marka.

Я пытался сделать через куки, но пхп считает куки как бы на шаг позже: было 6, затем 45, а пхп считывает только 6!
пробывал через url, через GEt все считывается отлично, но при записи явойскрипт обновляется страничка и вся форма сбивается.
Знаю, что надо через ajax, но незнаю как!
Подскажите кто знает!
Спасибо!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 12.3.2009, 11:26; Ответить: ZiTosS
Сообщение #2


Хех вы хотите чтобы мы в PHP вставили JS? У нас этого не получится. Я вам напишу простой пример с Ajax но только позже...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
linad
linad
Topic Starter сообщение 12.3.2009, 18:23; Ответить: linad
Сообщение #3


Хорошо, жду с не терпением!
главное мне как-то значение переменной передать !
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 14.3.2009, 11:15; Ответить: ZiTosS
Сообщение #4


Вот как и обещал работа с Ajax для вашего примера, конечно я накатал на скорую руку, а так многие параметры можно передавать в функцию и работать с ними, а не каждый раз искать элемент с нужным нам ID.

<html>
<head>
<script type="text/javascript">

/* функция создания объекта XMLHttpRequest и выполнение запроса*/
function makeRequest(url) {

  // создание объекта для разных браузеров
  var http_request = false;
  if (window.XMLHttpRequest)
  {
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType)
    {
      http_request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) {
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }

  // если объект не создан
  if (!http_request)
  {
    alert('Не вышло  Невозможно создать экземпляр класса XMLHTTP '); // выдаём сообщение.
    return false;
  }
     var id = document.getElementById("select1").value; //значение выбранное в первом селекте(марка)
     if(id != 0) // Если выбран НЕ первый пункт
     {
        http_request.onreadystatechange = function() { alertContents(http_request); }; // функция-обработчик
        http_request.open('GET', url+"?id="+id, true); //сам запрос в виде ("тип_запроса", "адрес", "асинхронность")
        http_request.send(null); //отправка дополнительных параметров
     } else {
        document.getElementById("mySelect").disabled = true; // если выбрали первый пункт закрываем селект
     }
}

//функция возвращения и обработки результата
function alertContents(http_request) {
  if (http_request.readyState == 4) // если состояние "выполнено"
  {
    if (http_request.status == 0 || http_request.status == 200) // если не возвращено никакой ошибки
    {
        var mySelect = document.getElementById("mySelect"); // select с id="mySelect"
        mySelect.disabled = false; // делаем его возможным к выбору
        mySelect.innerHTML = http_request.responseText; //возвращаем в селект результат.
    } else {
      return false;
    }
  }
}

</script>
</head>

<!-- при загрузке документа -->

<body onLoad="makeRequest('./ajax.php')">

<!-- при выборе какого-либо пункта -->

<select id="select1" onChange="makeRequest('./ajax.php')">
    <option value="0">Марка</option>
    <option value="1">Lada</option>
    <option value="2">BMW</option>
</select>

<br><br>

<select id="mySelect" disabled="true">
    <option value="0">Модель</option>
</select>
</body>
</html>


файл к которому идёт ajax запрос, в данном случае это PHP файл(ajax.php)
<?php
header('Content-Type: text/html; charset=windows-1251');

switch(intval($_GET['id'])){

    case 1:
?>
    <option value="1">Калина</option>
    <option value="2">3110</option>
    <option value="3">Копейка</option>
<?
    break;

    case 2:
?>
    <option value="1">MX3</option>
    <option value="2">MX5</option>
<?
    break;

    default:
    break;
}

?>

Как видите я формирую <option> в зависимости от присланного скриптом ID, так эе можно работать и с базой ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
linad
linad
Topic Starter сообщение 16.3.2009, 9:45; Ответить: linad
Сообщение #5


спасибо!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
linad
linad
Topic Starter сообщение 18.5.2009, 13:49; Ответить: linad
Сообщение #6


ZiTosS, Ваш код работает только в Mozilla и Opera. А подскажите пожалуйста почему он не работает под IE. Второй select становится активным, но список туда не подгружается (select - пуст).
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
v1ex
v1ex
сообщение 18.5.2009, 14:10; Ответить: v1ex
Сообщение #7


mawa, http://www.w3schools.com/ajax/ajax_browsers.asp в помощь.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
linad
linad
Topic Starter сообщение 18.5.2009, 15:44; Ответить: linad
Сообщение #8


У меня точно так!
Вот код:
function makeRequest(url)
                {
                //var response_1=false;
                 // создание объекта для разных браузеров
                 var http_request = false;
                 if (window.XMLHttpRequest)
                    {
                    alert("opera");
                    http_request = new XMLHttpRequest();
                    if (http_request.overrideMimeType)
                        {
                        http_request.overrideMimeType('text/xml');
                        }
                    }
                else if (window.ActiveXObject)
                    {
                    try
                        {
                        alert("IE_1");
                        http_request = new ActiveXObject("Msxml2.XMLHTTP");
                        }
                    catch (e)
                        {
                        try
                            {
                            alert("IE_2");
                            http_request = new ActiveXObject("Microsoft.XMLHTTP");
                            }
                        catch (e) {}
                        }
                    }

                  // если объект не создан
                  if (!http_request)
                    {
                    alert('Не вышло  Невозможно создать экземпляр класса XMLHTTP '); // выдаём сообщение.
                    return false;
                    }
                     var id = document.getElementById("select1").value; //значение выбранное в первом селекте(subject)
                     if (id != 0) // Если выбран НЕ первый пункт
                        {
                        http_request.onreadystatechange = function() { alertContents(http_request); }; // функция-обработчик
                        http_request.open('GET', url+"?id="+id, true); //сам запрос в виде ("тип_запроса", "адрес", "асинхронность")
                        http_request.send(null); //отправка дополнительных параметров
                        }
                    else
                        {
                        document.getElementById("mySelect").disabled = true; // если выбрали первый пункт закрываем селект
                        }                    
                    //-----------------------------------
                }
                //функция возвращения и обработки результата
            function alertContents(http_request)
                {
                if (http_request.readyState == 4) // если состояние "выполнено"
                    {
                    if (http_request.status == 0 || http_request.status == 200) // если не возвращено никакой ошибки
                        {
                        var mySelect = document.getElementById("mySelect"); // select с id="mySelect"
                        
                        //response_1=true;
                        mySelect.disabled = false; // делаем его возможным к выбору
                        mySelect.innerHTML = http_request.responseText; //возвращаем в селект результат.
                        }
                    else
                        {
                        return false;
                        }
                    }
                }

Работаю для IE_6. Выдает сообщение "IE_1", делается активным второй select и ВСЕ! Не могу понять в чем ошибка!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 21.5.2009, 19:58; Ответить: ZiTosS
Сообщение #9


Попробуйте просто сделать текстовый файл к которому обращаемся и сделайте не присвоение
mySelect.innerHTML = http_request.responseText; //возвращаем в селект результат.

А просто
alert(http_request.responseText)

Мне просто кажется что IE не понимает что значит innerHTML у SELECT. Он тупой осёл...

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужна работа
0 filatd 735 12.1.2024, 17:08
автор: filatd
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1237 24.11.2023, 14:46
автор: alexey
Открытая тема (нет новых ответов) Работа: Разная рутина
Работа, разные рутинные задачи: постинг / переговоры / поиск
1 ivanshargin 956 31.10.2023, 17:55
автор: ServersExpert
Открытая тема (нет новых ответов) Нужна удаленная работа
Нужна удаленная работа
0 filatd 1011 12.9.2023, 11:40
автор: filatd
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44890 19.7.2023, 10:03
автор: qpPeW


 



RSS Текстовая версия Сейчас: 17.4.2024, 2:13
Дизайн