Работа с формой без перезагрузки страницы PHP и AJAX

Тема в разделе "PHP", создана пользователем karpiy, 28 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. karpiy

    karpiy Создатель

    Регистр.:
    27 янв 2009
    Сообщения:
    21
    Симпатии:
    5
    Добрый день, как можно сделать так, чтобы при при изменении полей в форме, без перезагрузки страницы автоматически менялись значения. Значения будут подгружаться из xml файла.
    Пример на этой странице конвертор валют http://finance.i.ua
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Ты пробовал погуглить прежде чем спрашивать? вопрос довоольно распространенный и в инете куча инфы. От себя могу добавть, для чтения xml нужна библиотека simpleXML для PHP, а с помощью js-фреймворка jquery можно получить данные без перезагрузки страницы.
     
  3. unsiker

    unsiker

    Регистр.:
    6 июн 2008
    Сообщения:
    465
    Симпатии:
    172
    используй javascript
    на http://finance.i.ua написано:
    <input id="fn_s1" type="text" value="0.00" maxlength="80" onkeyup="fn_calculate();" onfocus="if (this.value == '0.00') this.value='';" onblur="if (this.value == '') {this.value = '0.00'; };">
    тоесть когда ты набираеш, срабатывет собитие onkeyup="fn_calculate();

    а вот функция

    PHP:
        fn_calculate(c);
    }
    function 
    fn_calculate(cmyval){
        var 
    myval myval || false;
        var 
    bid 1;
        var 
    parseFloat(dge('fn_s' bid).value) || '0.00';
        var 
    || dge('fn_c' bid).value;
        var 
    0;
        var 
    inp null;
        var 
    0;
        var 
    robj null;
        var 
    first true;

        if (
    == 1)
            var 
    fn_bc1 1
        else {
            if (
    typeof(fn_bR[fn_bID]) != 'undefined' && typeof(fn_bR[fn_bID][c]) != 'undefined' && typeof(fn_bR[fn_bID][c][0]) != 'undefined')
                var 
    fn_bc1 fn_bR[fn_bID][c][sell 1];
            else
                var 
    fn_bc1 '';
        }

        if (
    myval) {
            
    els dge('fn_bank').options;
            for (var 
    i=0els.lengthi++) {
                if (
    els[i].value == 1000)
                    
    //dge('fn_bank').selectedIndex = i;
                    
    els[i].selected true;
            }
        }

        for (var 
    i in fn_cs) {
            
    inp dge('fn_i' bid'_' i);
            if (
    inp == null)
                continue;
            
    robj dge('fn_o' bid'_' i);
            
    parseFloat(inp.value) || 0;
            if (
    == c) {
                
    robj.value s;
            } else if (
    == 1) {
                
    Math.round(100) / 100;
                if (
    robj.innerHTML) {
                    
    robj.innerHTML = (== 0) ? '0.00' t;
                } else {
                    
    robj.value = (== 0) ? '0.00' t;
                    
    //fn_updateWidth(robj, robj.value.length);
                
    }
            } else {
    //            t = (v == 0) ? 0 : Math.round(s * dge('fn_bc' + bid).value / v * 100) / 100;
                
    = (== 0) ? Math.round(fn_bc1 100) / 100;

                if (
    robj.innerHTML) {
                    
    robj.innerHTML = (== 0) ? '0.00' t;
                } else {
                    
    robj.value = (== 0) ? '0.00' t;
                    
    //fn_updateWidth(robj, robj.value.length);
                
    }
            }
        }
    }
    ПиСи: если что то не срабатывает может подучить javascript?
     
  4. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    И где ты тут видишь подгрузку данных из xml?
     
  5. karpiy

    karpiy Создатель

    Регистр.:
    27 янв 2009
    Сообщения:
    21
    Симпатии:
    5
    Как получить данные из xml файла я и так знаю, меня интересует реализация изменений данных в самой форме.
    Гугл мне понятного ответа так и не выдал
     
  6. unsiker

    unsiker

    Регистр.:
    6 июн 2008
    Сообщения:
    465
    Симпатии:
    172
    ептиль, а где ты видел на http://finance.i.ua/ подгрузку данных из xml?
    единственный файл который подгружается в формате xml это http://f.i.ua/crossdomain.xml

    Но суть дела это не меняет. Есть событие onkeyup, срабатывает когда ты начинаеш набирать текст в инпуте. Есть функция котороя отрабатывается. Какую функцию себе напишеш, такая и выполнится.
     
  7. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Если мои глаза мне не врут, ТС писал:
     
  8. karpiy

    karpiy Создатель

    Регистр.:
    27 янв 2009
    Сообщения:
    21
    Симпатии:
    5
    Писал, но суть не в этом.
    Для полного понимания вопроса, что нужно
    HTML:
    В это поле вводим число к примеру 100 <br>
    <input type="text" value="0.00"> 
    <br>
    В этом поле атоматически должен выводиться результат, допустим значение первого поля умноженное на 2 <br>
    <input type="text" value="0.00">
    
     
  9. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Это осуществляется простейшей функцией на javascript, которая будет вызываться по событию. В твоем случае это скорее всего будет событие onkeyup.
    А функция:
    HTML:
    
    <script type="text/javascript">
    function Multi (elm, id)
    {
    var i = document.getElementById(id);
    var j = elm.value;
    i.value = j*2;
    }
    </script>
    <!-- И сами инпуты -->
    <input id="1" onkeyup="Multi(this, 2)" type="text" value="0.00">
    <input id="2" type="text" value="0.00">
    
    Примерно так...
     
    karpiy нравится это.
  10. unsiker

    unsiker

    Регистр.:
    6 июн 2008
    Сообщения:
    465
    Симпатии:
    172
    Когда то сам таким баловаловался, теперь отдаю в хорошие руки
     

    Вложения:

    • 3058.zip
      Размер файла:
      4,1 КБ
      Просмотров:
      23
    karpiy нравится это.
Статус темы:
Закрыта.