Простой пример аякса

 
0
 
JavaScript
ava
Serious2008 | 12.11.2011, 21:22
Вот как у меня в оригинале.



<div id="output">
<form id="myForm" method="post" action="/poll-15-3.html">

<p align=center><b>asdasd</b></p>

<input type=radio value="0" name="vopros[]"> asdasdasd
<br><input type=radio value="1" name="vopros[]"> asdasdasdasd
<br><input type=radio value="2" name="vopros[]"> asdasdasdasd<br>&nbsp;



<input type=submit value=Отправить>



</form>



</div>

<br><p align=center><a href="http://articlesua.net/poll-all.html">Статистика</a></p>



<script type="text/javascript">

$(document).ready(function(){



var options = {



target: "#output",

beforeSubmit: showRequest,

success: showResponse,

timeout: 3000

};





$('#myForm').submit(function() {

$(this).ajaxSubmit(options);



return false;

});



});



// вызов перед передачей данных

function showRequest(formData, jqForm, options) {



var queryString = $.param(formData);





return true;

}



// вызов после получения ответа

function showResponse(responseText, statusText) {



$('#output').show();



}

</script>


Вот как в отладчике.
user posted image

После нажатия отправить появляется новая форма. Её код не знаю как показать, но в отладчике вот так оно выгялидит
user posted image

И когда на второй форме нажимаю на кнопку АЯКС не срабатывает, а срабатывает именно выполнение. Вот это и есть загвозка. Не могу понять почему не срабатывает аякс.
Kommentare (8)
ava
Serious2008 | 13.11.2011, 19:30 #
Я тут суть вопроса поменял. Просто не создавал новую тему.
ava
ksnk | 13.11.2011, 21:37 #
А в чём вопрос-то? В том, что установленные обработчики событий тут-же, после первого нажатия на сабмит теряются? Ну, дык, в результате выполнения запроса черным по белому так и написано - убей все, что у тебя в #output (в том числе и обработчики) и влепи новую форму. Восстанавливать обработчики событий неплохо бы...
ava
Serious2008 | 13.11.2011, 22:44 #
ksnk,
Подожди обработчик событий, на сколько я понимаю у меня храниться в
<script type="text/javascript">
а он за приделами дива output. так что ничего я не убиваю.
ava
&#036;дмитрий | 14.11.2011, 00:11 #
При клике форма заменяется на новую, а обработчик связан со старой формой
Самый простой вариант решения: заменить

function showResponse(responseText, statusText) {
$('#output').show();
}

на

function showResponse(responseText, statusText) {
$('#output').show();
$('#myForm').submit(function() {
$(this).ajaxSubmit(options);
return false;
});
}
ava
ksnk | 14.11.2011, 01:00 #
Цитата (Serious2008 @ 13.11.2011, 22:44 findReferencedText)
Подожди обработчик событий, на сколько я понимаю у меня храниться в 

Хранится-то он хранится, а вот устанавливается он на элемент #myForm, который убивается ajax'ом и заменяется на другой с таким-же именем.
ava
Serious2008 | 14.11.2011, 02:25 #
$дмитрий,

Твой вариант не помог, он всё равно без аякса обрабатывает.
ava
&#036;дмитрий | 14.11.2011, 02:39 #
Serious2008, дай линк посмотрю
ava
ksnk | 14.11.2011, 08:41 #
imho, проще воспользоваться методом live

$('#myForm').live('submit',function() {
$(this).ajaxSubmit(options);
return false;
});

Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden