AJAX (prototype) + PHP вопрос

Тема в разделе "Другие языки", создана пользователем goodvin, 19 дек 2007.

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

    goodvin Человек-Волшебник

    Регистр.:
    27 июн 2006
    Сообщения:
    667
    Симпатии:
    687
    Собственно есть такое дело:
    Код:
    <script type="text/javascript">
    
    var formname = 'form';
    var otvetsrv = 'response';
     
     Event.observe(window, 'load', init, false);
     function init() {
       Event.observe(formname, 'submit', result);
     }
     
     function result(e) {
       $(otvetsrv).innerHTML = '<img src="loading.gif" />';
       var myAjax = new Ajax.Updater(otvetsrv, 'ajax.php', 
        {
        method: 'post', 
        parameters: $(formname).serialize()
        }
       );
    //$(formname).disable();
    Event.stop(e);
     }
    
    </script>
    Форма:
    <form action="" method="POST" id="form">
    <input type="text" name="user" maxlength="30" value="valueuser" >
    <input type="password" name="pass" maxlength="30" value="valuepass}" >
    <input type="checkbox" name="remember" >
    <input type="hidden" name="sublogin" value="1">
    <input type="submit" value="Login" ></td>
    </form>
    Ответ от ajax.php:
    <p id="response"></p>
    
    Это код отправки данных с вормы form в ajax.php
    и после его выполнения я получаю ответ от ajax.php о том что все ОК или НЕ-ОК, так вот сам вопрос:
    Как сделать чтобы при ответе ajax.php что все ОК, форма становилась отключенной чтобы данные больше не отправлялись: например:$(formname).disable();
    Я вставлял в ответ яваскрипт, токо он AJAX-ом не возращается в полном виде он обрезает теги.
     
  2. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    тебе надо не форму в disable ставить, а обойти все ее элементы и отключить их..

    зы.. ajax тебе действительно js не вернет, но ты можешь из бэкенда передать указатель (пременную, массив..), в который записать какую js фун-ю запустить во фронтэнде и отловить его..
     
  3. goodvin

    goodvin Человек-Волшебник

    Регистр.:
    27 июн 2006
    Сообщения:
    667
    Симпатии:
    687
    чето я тебя не понял можешь код какойто показать, я присваивал переменной код с явой и передавал его в ajax но он обрезает код явы, а функции оставляет, напиши что ты имел в виду, я не понял
     
  4. RomAndry

    RomAndry Постоялец

    Регистр.:
    21 ноя 2007
    Сообщения:
    102
    Симпатии:
    24
    во первых можно по событию кнопки Submit обойти все поля и задизейблить их - ведь форма не перегружается.
    во вторых можно просто установить флаг в JS по которому и запускать функцию, которая задизейблит все поля.
     
  5. goodvin

    goodvin Человек-Волшебник

    Регистр.:
    27 июн 2006
    Сообщения:
    667
    Симпатии:
    687
    Сори, но с явой я не работал, а тут стоко и сразу, че там за флаги??
    подробней, плиз подробне в примере, ето не пхп, тут все для мня новое, как в первом классе :bc:
     
  6. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    что до обхода объектов, то
    var foo = "";
    for(var i in bar){
    foo += 'var: '+var+'; bar: '+bar+"\n";
    }
    alert(foo);
    тебе в помощь..

    зы.. document.getElementById("myFormID") возвращает объектную модель формы, если что..
     
  7. DOLARiON

    DOLARiON

    Регистр.:
    4 сен 2006
    Сообщения:
    191
    Симпатии:
    48
    а я делаю по-другому

    Код:
    var myAjax = new Ajax.Request(url, {
      method: 'post',
      parameters: pars, // параметры
      
         onLoading:function(){
            $(textid).innerHTML = '<div style="width: 100%; text-align: center;">бегунок - лоадинг</div>';
      },
    
         onSuccess:function(request){
             if(request.status != 200) {
               $(textid).innerHTML = "Ошибка!";
             } else {
               if( request.responseText == "DONE") {
                  //тут все ОК
               } else {
                  //жопа полная
               }
            }
         }
      
    });
    
    соответственно, на пхп возвращаешь "DONE" - все ок, "ERROR" - чета не получилось

    или можно возвращать на пхп к примеру
    input type="hidden" id="Save" value="done"
    то $('Save').value - будет виден

    я же далее на том же прототайпе - просто сворачиваю форму... банально эффектом "Effect.BlindUp"...
    но кстати, действительно как вариант пройтись по всем полям формы и поставить дисаблед... тут выше уже писали как это сделать...

    если че - стукани в асю...
     
  8. xorbit13

    xorbit13 Создатель

    Регистр.:
    9 фев 2008
    Сообщения:
    41
    Симпатии:
    10
  9. Dez1

    Dez1 Создатель

    Регистр.:
    8 дек 2007
    Сообщения:
    48
    Симпатии:
    1
    удалено
     
  10. Sakhalinec

    Sakhalinec Создатель

    Регистр.:
    8 янв 2009
    Сообщения:
    33
    Симпатии:
    0
    Ребят , помогите мне пожалуйста. есть код

    function showResponse (originalRequest) {

    var request = AjaxRequest('tyres.tpl', false).responseText;
    var newData = originalRequest.responseText;
    $('load').style.display = 'none';
    $('content').innerHTML = request;
    }

    как сделать, чтобы переменной $content мог передать результат выполенния скрипта а не статичный текст
     
Статус темы:
Закрыта.