Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Перестают работать функции, после ajax

Сообщения:  [1-10]   [11-12] 

 
 автор: confirm   (18.04.2012 в 10:04)   письмо автору
 
   для: ЯСА   (18.04.2012 в 09:30)
 

Сервер ответит, и будет помещен ответ его в seetag. У него отменяется submit формы.

  Ответить  
 
 автор: ЯСА   (18.04.2012 в 09:30)   письмо автору
 
   для: grafen   (18.04.2012 в 09:16)
 

Вы не мой код попробовали.

Вы попробовали свой код.

А я просил вас конкретно скопировать выложенный мною код и, КАК ОН ЕСТЬ, БЕЗ ЕДИНОГО ИЗМЕНЕНИЯ, запустить в браузере.

Для того, чтобы вы убедились, что сабмит ПРОИСХОДИТ ПО-ЛЮБОМУ, если его не отменить.

А сабмит приводит к тому, что в окне появляется НОВЫЙ документ, никакого отношения к предыдущему НЕ ИМЕЮЩИЙ.
-----

Да, ваш скрипт исполняется, данные в БД заносятся, но вот ответ от сервера страница, запустившая скрипт, получить уже не может.
Потому что этой страницы уже НЕТ.
На её месте в окне браузера - другая страница.
Пусть с тем же адресом (URL), но это - другой документ.

  Ответить  
 
 автор: grafen   (18.04.2012 в 09:16)   письмо автору
 
   для: ЯСА   (17.04.2012 в 18:38)
 

Попробовал и Ваш код - ничего не происходит, отправки нет, но данные отсылаются и добавляются в БД.

Насколько я понимаю, этот код ловит нажатие, но его не делает:

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


Дальше берутся параметры из поля:
$("#idfilter").val()


И данные через ajax отправляются в БД.

И после этого заменяют, обновленными даными, содержимое div'а:
$("#seetag").html(results);

  Ответить  
 
 автор: ЯСА   (17.04.2012 в 18:38)   письмо автору
 
   для: grafen   (17.04.2012 в 12:14)
 

<form action="http://google.com/" onsubmit="//здесь_КАКОЙ_УГОДНО_скрипт_хоть_AJAX_хоть_запуск_ракет_по_США">
<input name="nm" value="yes">
<input type="submit">
</form>

Запустите, нажмите на кнопку и посмотрите на результат.

Самбит происходит (переадресация, по-вашему) или не происходит?
Стартовую страничку Гугля в окошке видите или не видите?
В адресной строке символы ?nm=yes видите или не видите?

Из каких соображений вы полагаете, что в вашем случае сабмита не будет?
Где вы его отменяете?
В каком конкретном месте кода?

  Ответить  
 
 автор: confirm   (17.04.2012 в 12:50)   письмо автору
 
   для: grafen   (17.04.2012 в 12:14)
 

Вы не хотите понять о чем вас спрашивают. Давайте тогда в обратном порядке. А зачем вам два метода передачи данных, если вы отправляете одному и тому же обработчику данные одной и той же формы?

  Ответить  
 
 автор: grafen   (17.04.2012 в 12:14)   письмо автору
 
   для: ЯСА   (17.04.2012 в 01:20)
 

Попробовал. Ничего не переадресовывает. Тут же через ajax забираются данные из полей, примерно так: $("#idmenu").val(). Т.е. форма не отправляется, насколько я понимаю.

  Ответить  
 
 автор: ЯСА   (17.04.2012 в 01:20)   письмо автору
 
   для: grafen   (16.04.2012 в 21:38)
 

Нажатие на кнопку сабмита приводит не только к запуску скрипта, но непосредственно и к самому сабмиту,.
Так как в форме у вас нет ни одного элемента с непустым атрибутом NAME и ACTION в форме не указан, визуально вы этого сабмита не замечаете.
А вот ради проверки добавьте либо так
echo '<form id="add" action="http://google.com/">
<input ...

либо так
echo '<form id="add">
<input name="idfilter" type="hidden"...

и нажмите кнопу сабмита (которая у вас с плюсиком).

И сразу увидите - либо страницу Гугля в окне, либо добавление символа вопроса и прочего в адресной строке браузера.

Правильный вывод, надеюсь, сделать сможете самостоятельно?

  Ответить  
 
 автор: grafen   (16.04.2012 в 21:38)   письмо автору
 
   для: confirm   (16.04.2012 в 19:01)
 

Я единственное, что понимаю, что когда обновляю div, то перестают работать все функции (кроме добавления записей). Какой выход?

  Ответить  
 
 автор: confirm   (16.04.2012 в 19:01)   письмо автору
 
   для: grafen   (16.04.2012 в 17:24)
 

Ваш код к вашему вопросу имеет сугубо косвенное отношение, и никоим образом не поясняет проблемы.
В последних версиях никаких других не добавляли, если речь об обработке событий, а вот в версии 1.7 добавлен метод .on(), который заменяет три устаревших метода: .bind(), .delegate() и .live(), но которыми по прежнему можно пользоваться. Данный метод, как и метод .live() позволяет установить обработчик события объектам, которые могут быть загружены на страницу в будущем.
Ровно об этом вас и спрашивали.

  Ответить  
 
 автор: grafen   (16.04.2012 в 17:24)   письмо автору
 
   для: AlexSol   (16.04.2012 в 15:17)
 

Новые элементы добавляются путем обнуления div, и вставки туда обновленной информации. Выяснил, что не реагируют все элементы из-за того, что теряется инициализация, нужно по-новому присвоить полям действия скрипта. Использую библиотеку jquery, пишут, что там для этого используется функция live (в последних версиях ещё какие-то другие добавили), но не получается привязать к своему скрипту.

Вот кусок:

<script type="text/javascript">
$(document).ready(function(){

$('#add').submit(function(){
    
function loadfilter(id)
{
    $.ajax({
   type: "POST",
   url: "tovarplus.php",
   data: 'filter=' + id,
   cache: false,
   success: function(results){
    $("#seetag").html(results);
    $('#add').trigger('reset');
  }
   
});
}
    
$.ajax({
   type: "POST",
   url: "tovarplus.php",
   data: 'idfilter=' + $("#idfilter").val() + '&name=' + $("#name").val(),
   cache: false,
   success: function(){
    loadfilter($("#idfilter").val()); 
  }
   
});
return false;
});

});
</script>
<?php
echo '<form id="add">
<input type="hidden" id="idfilter" value="'
.$_GET["id"].'">
<input type="text" id="name">
<input type="submit" value="+">
</form>'
;

echo 
'<div id="seetag">';
select_tag($_GET["id"]);
echo 
'</div>';

  Ответить  

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования