Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсветка дат без перезагрузки 
:(
    Опции темы
Black_leopard
Дата 2.3.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Мне нужно сделать, чтобы при выборе года и даты без перезагрузки страницы происходил поиск по базе данных дат, на которые уже есть события и подсвечивались эти даты в календарике. 
Реализовал на JavaScript необходимые действия, все делает правильно получает даты, но вот как их из функции-обработчика события onreadystatechange вытащить (глобальными переменнами не получается, т.к. файлы js разные используются, но загружаются в одном документе). 
В html хранятся в виде строки эти данные (функция handleReadyStateChange()). Если сделать return то каким образом?? Просто так написать не получается.
Вот код JavaScript
Код


var xmlHttp = createXMLHttpRequestObject();

function createXMLHttpRequestObject() {
    var xmlHttp;
    try {
        xmlHttp = new XMLHttpRequest();
    }
    catch (e) {
        var xmlHttpRequestVersion = new Array ("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP");
        for (var i=0; i<xmlHttpRequestVersion.length && !xmlHttp; i++) {
            try {
                xmlHttp = new ActiveXObject(xmlHttpRequestVersion[i]);
            }
            catch (e) { }            
        }
    }
    if (!xmlHttp)
         alert("Error creating the XMLHttpRequest object.");
    else 
        return xmlHttp;
}

function process(Year, Month) {
    if (xmlHttp) {
        try {
            xmlHttp.open("GET", "ajax/ajax.php?year="+Year+"&month="+Month, true);
            xmlHttp.onreadystatechange = handleReadyStateChange;
            xmlHttp.send(null);
        }
        catch (e) { 
            alert(e.ToString());
        }
    }
}

function handleReadyStateChange() {
    if (xmlHttp.readyState == 4)  {
     if (xmlHttp.status == 200)    {
            var xmlResponse = xmlHttp.responseXML;
            if (!xmlResponse || !xmlResponse.documentElement) {
                throw("Invalid XML structure");
            }
            var rootNodeName = xmlResponse.documentElement.nodeName;
            if (rootNodeName == "parsererror") throw("Invalid XML structure");
            xmlRoot = xmlResponse.documentElement;
            dateArray = xmlRoot.getElementsByTagName("data");
            var html = "";
            for (var i=0; i<dateArray.length; i++) {
                html = html + "|" + dateArray.item(i).firstChild.data;
            }            
     }
     else {
           alert("There was a problem accessing the server: " + xmlHttp.statusText);
     }
    }    
}


А вот сам apax.php
Код

    header('Content-Type: text/xml');
    session_start();
    require_once(getenv("DOCUMENT_ROOT")."/class/database.php");
    $db = new database();
    $month = (isset($_GET['month']))?$_GET['month']:00;
    $year = (isset($_GET['year']))?$_GET['year']:00;
    $query = "SELECT * FROM `registr_occupation` WHERE `Id_user` = '".$_SESSION['Id']."' AND `Date` LIKE '".$year."-".$month."-%' ORDER BY `Date` ASC";
    $result = mysql_query($query);
    echo '<response>';
    while ($array_fetch = mysql_fetch_array($result)) {
        $explodeDate = explode("-",$array_fetch['Date']);
        $day = $explodeDate[2];
        echo '<data>'.$day.'</data>';
    }
    echo '</response>';


Помогите, пожалуйста. У меня знаний JavaScript не очень много, поэтому сам додуматься не могу  smile 
PM MAIL   Вверх
Black_leopard
Дата 4.3.2007, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Неужели никто не встречался с таким вопросом? Я пытался записывать это значение в поле hidden, но код javascript, не видет эту форму, можно ли каким-либо образом создать это поле хидден или в cookie закинуть эти значения? 
PM MAIL   Вверх
AKS
Дата 4.3.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(Black_leopard @  4.3.2007,  09:25 Найти цитируемый пост)
Я пытался записывать это значение в поле hidden...

А зачем в hidden? Можно ведь сразу вызвать функцию, которая бы занималась разбором этой строки (та, что в переменной html). Надо ведь что - проанализировать строку ответа и если там "что-то где-то", то внести изменения в визуальное представление календарика (подсветить нужные даты). Так ведь?

PM MAIL   Вверх
Black_leopard
Дата 4.3.2007, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Точно, можно и так smile, но тут возникает еще одна сложность как передать в эту функцию-обработчик параметры, т.к. год и месяц (а также еще нужен id пользователя, который вошел), чтобы отрисовать календарик.
Но я сделал с помощью cookie, все работает отлично.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1395 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.