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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не формируется select с помощью JsHttpRequest.js 
:(
    Опции темы
Scorpion75
Дата 1.11.2012, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет
Есть скрипт mds-job 2
Там при добавлении резюме или вакансии динамически формируются поля выбора города и профессии
До этого все работало, а потом вдруг перестало
В коде не лазил

В форме добавления есть код
Код

        <tr align="left">
            <td>
                <b><?php print ADMIN_TEMPLATE_ADD_PROFECY_INPUT_SELECT_RAZDEL; ?></b><font color="#ff0000">*</font><br>
                <select name="id_razdel" id="id_razdel" class="select" onChange="startReqData(id_razdel.value, 'profecy');">
                    <option value="0"><?php print ADMIN_TEMPLATE_ADD_PROFECY_OPTION_SELECT_RAZDEL; ?></option>
<?php
    // блок выбора раздела из БД
    $query_rz = "SELECT SQL_CACHE id_razdel, name_razdel FROM $razdel_t ORDER BY id_razdel ASC";
    $result_rz = mysql_query($query_rz);
    while ($line_rz = mysql_fetch_assoc($result_rz))
    {
        print '<option value="' . $line_rz['id_razdel'] . '">' . $line_rz['name_razdel'] . '</option>' . "\r\n";
    }
?>
                </select>
                <p class="tdhelp" style="margin: 0;"><?php print TEMPLATE_ADD_RESUME_INPUT_SELECT_RAZDEL_COMMENT; ?></p>
            </td>
        </tr>


Далее скрипт в файле loaddata.js

Код

// ФУНКЦИЯ ЗАПРОСА ДАННЫХ
function Do_Load(val_id, val_name, inferior)
{
    var req = new JsHttpRequest();

    req.onreadystatechange = function()
                             { 
                                if (4 === req.readyState)
                                {
                                    res = req.responseJS.res;

                                    if('die' === res || !res)
                                    {
                                        clearData(val_name);
                                        document.getElementById('divid_' + val_name).innerHTML = '&nbsp;';
                                     return false;
                                    }
                                    else
                                    {
                                        loadDataRes(val_name, res, inferior);
                                    }
                                }
                             }

    req.open(null, 'function/loaddata.php', true);
    req.send( {req_id: val_id,  req_name: val_name } );


// ФУНКЦИЯ ИНИЦИАЛИЗАЦИИ
function startReqData(id, name_id, inferior)
{
    document.getElementById('divid_' + name_id).innerHTML = '<img src="template/images/progress.gif">';

    var mess1;
    var mess2;
    var mess3;
    switch (getCookie('reml'))
    {
        case 'ua':
                    mess1 = 'Неважливо';
                    mess2 = 'Виберіть професію';
                    mess3 = 'Виберіть місто';
                    break;
        case 'rus':
        default:
                    mess1 = 'Неважно';
                    mess2 = 'Выберите профессию';
                    mess3 = 'Выберите город';
                    break;
    }        

    if (document.getElementById('s'))
    {
        var prSel_text = ctSel_text = mess1;
    }
    else
    {
        var prSel_text = mess2;
        var ctSel_text = mess3;
    }

    switch (name_id)
    {
        case 'profecy':
         var select = document.getElementById('id_' + name_id);
            select.options.length = 0;
            select.options[select.options.length] = new Option(prSel_text, 0, false, true);
            break;

        case 'city':
         var select = document.getElementById('id_' + name_id);
            select.options.length = 0;
            select.options[select.options.length] = new Option(ctSel_text, 0, false, true);
            break;
    }

    Do_Load(id, name_id, inferior);
}

// ФУНКЦИЯ ЗАГРУЗКИ ДАННЫХ В ДОКУМЕНТ
function loadDataRes(name, data, inferior)
{
    var select = document.getElementById('id_' + name);
    select.options.length = 1;

    for (var i in data)
    {
        // добавляем новый объект OPTION к нашему SELECT
        if (inferior == i)
        {
            select.options[select.options.length] = new Option(data[i], i, true, true);
        }
        else
        {
            select.options[select.options.length] = new Option(data[i], i, false, false);
        }
    }
    
    document.getElementById('divid_' + name).innerHTML = '&nbsp;';
}


// ФУНКЦИЯ ОЧИСТКИ ДАННЫХ В ДОКУМЕНТЕ
function clearData(id_data)
{
    var mess1;
    var mess2;
    switch (getCookie('reml'))
    {
        case 'ua':
                    mess1 = 'Неважливо';
                    mess2 = 'Немає даних';
                    break;
        case 'rus':
        default:
                    mess1 = 'Неважно';
                    mess2 = 'Нет данных';
                    break;
    }        

    if (document.getElementById('s'))
    {
        var prSel_text = ctSel_text = mess1;
    }
    else
    {
        var prSel_text = ctSel_text = mess2;
    }

    switch (id_data)
    {
        case 'profecy':
         var select = document.getElementById('id_' + id_data);
            select.options.length = 0;
            select.options[select.options.length] = new Option(prSel_text, 0, true, false);
            break;

        case 'city':
         var select = document.getElementById('id_' + id_data);
            select.options.length = 0;
            select.options[select.options.length] = new Option(ctSel_text, 0, true, false);
            break;
    }
}

function setOptionVal(select_id, option_val)
{
    var objSelect = document.getElementById('id_' + select_id);

    for (var i = 0; i < objSelect.length; i++)
    {
        if (objSelect.options[i].value === option_val)
        {
            objSelect.options[i].selected = 1;
        }
    }
}


/******* ЗАГРУЗКА ДАННЫХ ПО ВАКАНСИЯМ И РЕЗЮМЕ ДЛЯ ДИНАМИЧЕСКОГО ПОКАЗА И СКРЫТИЯ *******/
function LoadInfoBoard (id, type)
{
    var show = 'table-row';
    if(navigator.appName == 'Microsoft Internet Explorer') show = 'block';

    tr_id = type + '_' + id;
    img_id = 'img' + type + '_' + id;
    if (document.getElementById(tr_id).style.display == 'none')
    {
        document.getElementById(tr_id).style.display = show;
        document.getElementById(img_id).src = 'template/images/resize_0.gif';
    }
    else
    {
        document.getElementById(tr_id).style.display = 'none';
        document.getElementById(img_id).src = 'template/images/resize_1.gif';
    }
}


и файл запрса loaddata.php

Код

<?php

function clean_url($url)
{
  if (!$url) return;

  $url = str_replace('http://', '', $url);
  if (strtolower(substr($url, 0, 4)) === 'www.') $url = substr($url, 4);
  $url = explode('/', $url);
  $url = reset($url);
  $url = explode(':', $url);
  $url = reset($url);

  return $url;
}

if (clean_url($_SERVER['HTTP_REFERER']) !== clean_url($_SERVER['HTTP_HOST'])) die ("Hacking attempt!");

require_once '../inc/configreq.php';
require_once '../inc/JsHttpRequest.php';

$JsHttpRequest =& new JsHttpRequest('UTF-8');
ClearDataFromRequest();
$req_id = isset($_REQUEST['req_id']) ? $_REQUEST['req_id'] : false;
$req_name = isset($_REQUEST['req_name']) ? $_REQUEST['req_name'] : false;

/***** ПОДГРУЖАЕМ ДАННЫЕ ПРИ ВЫБОРЕ РАЗДЕЛОВ И ОБЛАСТЕЙ *****/
if ($req_id && $req_name)
{
    if (ctype_digit($req_id) && ctype_alpha($req_name))
    {
        switch($req_name)
        {
            case 'profecy':
                $table = $profecy_t;
                $orderby = 'ORDER BY name_profecy ASC';
                break;

            case 'city':
                $table = $city_t;
                $orderby = 'ORDER BY capital DESC, name_city ASC';
                break;

            default:
                $_RESULT = array('res' => 'die'); // В результате, Пользователь получит сообщение об ошибке
                echo 'Error: Request Data is Incorrect.';
                return false;
        }

        $query = "SELECT SQL_CACHE id_$req_name, name_$req_name FROM $table WHERE id_parent='$req_id' $orderby";
        $result = mysql_query($query);

        $respResult = false;
        while ($line = mysql_fetch_assoc($result))
        {
            $respResult[$line['id_' . $req_name]] = $line['name_' . $req_name];
        }

        $_RESULT = array('res' => $respResult); // Отправляем результат
        echo 'Request Data of Successful.';
        return true;
    }
    else
    {
        $_RESULT = array('res' => 'die'); // В результате, Пользователь получит сообщение об ошибке
        echo 'Error: Request Data is Incorrect.';
        return false;
    }
}
else
{
    $_RESULT = array('res' => 'die'); // В результате, Пользователь получит сообщение об ошибке
    echo 'Error: Non Data in Request.';
    return false;
}

?>


Методом тыка было определено, что
 в функции Do_Load переменная res  не определена, поэтому
в форму данные не подгружаются

В чем может быть проблема?

Это сообщение отредактировал(а) Aliance - 2.11.2012, 10:08
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




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


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

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