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

Статус
В этой теме нельзя размещать новые ответы.

goodvin

Человек-Волшебник
Регистрация
27 Июн 2006
Сообщения
667
Реакции
694
Собственно есть такое дело:
Код:
<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
тебе надо не форму в disable ставить, а обойти все ее элементы и отключить их..

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

зы.. ajax тебе действительно js не вернет, но ты можешь из бэкенда передать указатель (пременную, массив..), в который записать какую js фун-ю запустить во фронтэнде и отловить его..
чето я тебя не понял можешь код какойто показать, я присваивал переменной код с явой и передавал его в ajax но он обрезает код явы, а функции оставляет, напиши что ты имел в виду, я не понял
 
во первых можно по событию кнопки Submit обойти все поля и задизейблить их - ведь форма не перегружается.
во вторых можно просто установить флаг в JS по которому и запускать функцию, которая задизейблит все поля.
 
во первых можно по событию кнопки Submit обойти все поля и задизейблить их - ведь форма не перегружается.
во вторых можно просто установить флаг в JS по которому и запускать функцию, которая задизейблит все поля.
Сори, но с явой я не работал, а тут стоко и сразу, че там за флаги??
подробней, плиз подробне в примере, ето не пхп, тут все для мня новое, как в первом классе :bc:
 
  • Заблокирован
  • #6
что до обхода объектов, то
var foo = "";
for(var i in bar){
foo += 'var: '+var+'; bar: '+bar+"\n";
}
alert(foo);
тебе в помощь..

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

Код:
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"...
но кстати, действительно как вариант пройтись по всем полям формы и поставить дисаблед... тут выше уже писали как это сделать...

если че - стукани в асю...
 
Ребят , помогите мне пожалуйста. есть код

function showResponse (originalRequest) {

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

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