ФорумПрограммированиеJavaScript → Ajax форма

Ajax форма

  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 20 августа 2008 г. 13:11

    Положение очень печальное.. заказчику на сайте как оказалось надо калькулятор аналогичный(точно такойже) как и у
    http://autoins.ru/ru/osago/calculator/
    Но воровать скрипты у актис сюстема как то не хочется.. к тому же всего и не сваруешь.
    Аякс знаю только теоретически.
    Как получать текущее значение формы я думаю смогу нагуглить, но было бы не плохо если бы всё таки расказали или дали ссылки чё покурить.
    Основная загвоздка в том, как сделать вот этот выбор населённого пункта, я понимаю что надо составить аяксовый запрос на сервер, сервер на него пришлёт ответ и собственно всё, но как потом этот ответ распарсить?
    Т.е. как вообще составить правильный запрос на сервер? и как на пыхе его принять и отправить обратно?
    если не лень разжуйте пожалуйста этот калькулятор, заранее очень благодарен, просто и сроков нету самому разбираться, тестить и т.д.
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 20 августа 2008 г. 14:23, спустя 1 час 12 минут 42 секунды

    Калькулятор разжевывать не буду, но сами принципы попробую объяснить.

    1. Берешь либу для работы с аджаксом :) (простейший вариант — JsHttpRequest, Мавру просьба не материться:))).
    2. Дальше на примере, вот у меня эта штука сделана как раз аджаксом, объясняю:
    <script src="/JsHttpRequest/JsHttpRequest.js"></script>
    <script language="javascript" type="text/javascript">
    <!–
    function encode_email() {
    q = document.getElementById('email').value; // получаем значение текстового поля email
    if (q != "") {
    JsHttpRequest.query(
    "/JsHttpRequest/backend_encode_email.php", // обработчик
    { "q": q }, // переменные, которые нужно передать в обработчик
    function(result) { // функция, которая выполняется после того, как отработал обработчик
    document.getElementById('emailresult').innerHTML = result["r"]; // впихиваем в див с ид emailresult подготовленный в обработчике код
    },
    false
    );
    } else {
    document.getElementById('emailresult').innerHTML = '<b><font color="red">Вы не ввели e-mail адрес</font></b>';
    } return false;
    }
    //–>
    </script>

    А в обработчике:
    require_once "JsHttpRequest.php";
    $JsHttpRequest =& new JsHttpRequest("windows-1251");

    $email = $_REQUEST['q'];

    if (!preg_match ('/^((\S+)@([a-z0-9-]+)(\.)([a-z]{2,4})(\.?)([a-z]*)(,?)( ?))+$/i', $email)) {
    $data = '<b><font color="red">Неверный формат e-mail адреса</font></b>';
    } else {
    $data = '<p><b>Первый способ:</b><div class="code">'.method_1($email).'</div><p>
    <p><b>Второй способ:</b><div class="code">'.method_2($email).'</div><p>
    <p><b>Третий способ:</b><div class="code">'.method_3($email).'</div><p>
    <p><b>Четвертый способ:</b><div class="code">'.method_4($email).'</div><p>';
    }

    $_RESULT = array (
    "r" => $data,
    );

    3. Все :)
  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 20 августа 2008 г. 15:56, спустя 1 час 32 минуты 40 секунд

    Такс… спасибо большое.. в общих чертах понятно..
    Т.е. я на пыхе отправляют массив, а яваскриптом его иннерХТМЛю? а не надо на жс проверки какие нить ставить типа пришёл ли ответ или нет?
    И сразу вопрос, в том калькуляторе, после выбора региона в остальных появляется "идёт загрузка", как такую вещчь получить?
    У мну с этим просто вообще трабл=( на ЖС ничё толком не писал..
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 августа 2008 г. 22:01, спустя 6 часов 4 минуты 31 секунду


    а не надо на жс проверки какие нить ставить типа пришёл ли ответ или нет?


    Надо. Прочти внимательно, еще это и это.
    adw/0
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 20 августа 2008 г. 23:01, спустя 1 час 46 секунд

    И сразу вопрос, в том калькуляторе, после выбора региона в остальных появляется "идёт загрузка", как такую вещчь получить?

    В начале функции (до запроса бекенду) выводишь див с «идет загрузка», после получения результата его убираешь (document.getElementById(id).style.display = 'none';).
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 21 августа 2008 г. 0:57, спустя 1 час 55 минут 38 секунд

    Мавру просьба не материться

    бля, вот хуле сразу мавер?!
    возьми в пример jQuery и мавер будет на тя малицца
  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 21 августа 2008 г. 12:04, спустя 11 часов 7 минут 15 секунд

    А подскажите пожалуйста, как мне забрать валуе с опшинов у селекта? обращаться к айдишнику селекта?
    И смогу ли я сделать иннер.хтмл в селект по айдишнику, т.е. я как думаю, сделать так же переменную $data как sap показал, со всеми опшионами
    $data = <option> </option>;
    $data .= <option> </option>;
    $data .= <option> </option>;
    ….

    и потом сделать
    document.getElementById('select').innerHTML = result["r"];
    получится ли так?
    т.е. что бы избежать цикла по массиву на ЖС.
    И все функции в яваскрипте на сколько я знаю срабатываю по определённому эвенту, как мне запустить допустим функцию result() сразу как пришёл ответ?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 августа 2008 г. 12:17, спустя 12 минут 28 секунд

    Z-MODe, вот, подобное обсуждали http://pyha.ru/forum/topic/433.0
    adw/0
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 августа 2008 г. 12:58, спустя 41 минуту 1 секунду

    Z-MODe, хочешь успеть до утра и без трабл? Мой тебе совет, заюзай фреймворк типа JQuery, Prototype или JsHttpRequest для AJAX'a.
    adw/0
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 21 августа 2008 г. 12:58, спустя 14 секунд

    порадовала строка
    if( navigator.userAgent.indexOf( "Opera" ) != -1 ) return null; 
  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 21 августа 2008 г. 13:01, спустя 3 минуты 23 секунды

    adw0rd, Шарил бы я в яваскрипте. я изначально думал калькулятор сделать чисто серверный.. а тут ему вот как там надо.. а я в ЖС вааще ноль.. к тому же там только в одном месте надо заяксить, города эти.. а на остальное там реально куча условий просто.. эти условия пока соображу как.. ещё больше времени думаю пройдёт=(
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 21 августа 2008 г. 13:06, спустя 4 минуты 13 секунд

    попробуй вот этим города тянуть
    там уже все сделано за тебя

    http://mabp.kiev.ua/content/2008/04/08/autocomplete_by_your_own_hands/
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 августа 2008 г. 13:08, спустя 2 минуты 4 секунды

    Z-MODe, еще раз говорю: в случае с JsHttpRequest есть обширная документация на РУССКОМ языке.
    Без знаний JavaScript можно с легкостью ей (JsHttpRequest) пользоваться. Что не скажешь о том коде, на который ты привел ссылку.
    adw/0
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 августа 2008 г. 13:09, спустя 1 минуту 22 секунды

    CTAPbIu_MABP,
    if( isStupidIEVersion() ) return null;
    :)
    adw/0
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 21 августа 2008 г. 13:11, спустя 1 минуту 34 секунды

    isStupidIEVersion()

    ты о чем?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!