Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2012, 10:08   #1
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию Ajax и jquery. Onclick для <li>

Привет! В index.html есть такой код:
Код:
<script>
  $(document).ready(function(){  
          
            $('#myForm').submit(function(){  
                $.ajax({  
                    type: "POST",  
                    url: "script.php",  
                    data: "name="+$("#name").val(),  
                    success: function(html){  
                        $("#content").html(html);  
                    }  
                });  
                return false;  
            });  
	 
        });  
</script>
Но помимо нажатия на кнопку, мне нужно обрабатывать нажатия не элементы списка
Код:
<form id = "listForm">
<ol>
<li id=someID onclick="listID = someID">somedata</li>
...
</ol>
</form>
Я пытался запихать всё в одну функцию, видимо это неправильно:
Код:
<script>  
	
        $(document).ready(function(){  
          
            $('#myForm').submit(function(){  
                $.ajax({  
                    type: "POST",  
                    url: "mysql.php",  
                    data: "name="+$("#name").val(),  
                    success: function(html){  
                        $("#content").html(html);  
                    }  
                });  
                return false;  
            });  
			$('#listForm').onclick(function(){  
                $.ajax({  
                    type: "POST",  
                    url: "somescript.php",  
                    data: "id="+$listID,   
                    success: function(html){  
                        $("#upd").html(html);  
                    }  
                });  
                return false;  
            });  
			
        });  
    </script>
Возникает ошибка Uncaught TypeError: Object [object Object] has no method 'onclick', но при нажатии на элемент списка в переменную listID заносится значение someID, значит onclick всё таки срабатывает.
Наверное нужно как-то по-другому обрабатывать onclick?
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Старый 13.08.2012, 10:29   #2
acteralex
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 189
По умолчанию

click, а не onclick
acteralex вне форума Ответить с цитированием
Старый 13.08.2012, 10:36   #3
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию

Цитата:
Сообщение от acteralex Посмотреть сообщение
click, а не onclick
Теперь при нажатии на элемент списка переменной listID не присваивается значение someID. Сдаётся мне, что всё же onclick.
Хотя ошибка Uncaught TypeError: Object [object Object] has no method 'onclick' больше не появляется.
Пол-жизни сидючи, в монитор глядючи...

Последний раз редактировалось Last; 13.08.2012 в 10:47.
Last вне форума Ответить с цитированием
Старый 13.08.2012, 10:47   #4
acteralex
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 189
По умолчанию

Код:
$('#listForm').live('click', function(){  
        $.ajax({  
            type: "POST",  
            url: "somescript.php",  
            data: "id="+$listID,   
            success: function(html){  
                $("#upd").html(html);  
            }  
        });  
        return false;  
    });
попробуй так
acteralex вне форума Ответить с цитированием
Старый 13.08.2012, 10:49   #5
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Код:

	$('#listForm li').click(function(){  
                $.ajax({  
                    type: "POST",  
                    url: "somescript.php",  
                    data: this.id,   
                    success: function(html){  
                        $("#upd").html(html);  
                    }  
                });  
            });
Cronos20 вне форума Ответить с цитированием
Старый 13.08.2012, 11:14   #6
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Cronos20 Посмотреть сообщение
Код:

	$('#listForm li').click(function(){  
                $.ajax({  
                    type: "POST",  
                    url: "somescript.php",  
                    data: this.id,   
                    success: function(html){  
                        $("#upd").html(html);  
                    }  
                });  
            });
Результата нет.
В somescript.php одно действие:
Код:
<?php
 echo "Hello world!";
?>
В index.html есть блок
Код:
<div id="upd"></div>
поэтому вывод должен быть, но ничего не происходит. Повторюсь, если делать click вместо onclick запись в переменную listID не производится, так что скорее всего это не то событие, которое нужно. Или я что-то не понимаю?
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Старый 13.08.2012, 12:23   #7
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию

Решил пока не париться с аяксом, и разобраться с кликом.
Оказалось, функция
Код:
	$('#listForm').click(function () {
      alert(this.id);
	  });
тоже не срабатывает. Однако, если форму listForm создавать не динамически с помощью скрипта, а просто запихать в html файл, то всё прекрасно работает.
Пришёл к выводу, что придётся формировать javascript в php скрипте, это конечно не очень радует.
Вопрос знатокам, если на странице будет два скрипта:
Код:
<script>  	
        $(document).ready(function(){  
          
            $('#myForm').submit(function(){  
                $.ajax({  
                    type: "POST",  
                    url: "mysql.php",  
                    data: "last_name="+$("#last_name").val(),  
                    success: function(html){  
                        $("#content").html(html);  
                    }  
                });  
                return false;  
            }); 				
        });  
    </script>  
blalbabla, сформировали список.
<script>  	
        $(document).ready(function(){  
          
            $('#listForm li').click(function(){  
                $.ajax({  
                    type: "POST",  
                    url: "update.php",  
                    data: "id="+this.id,  
                    success: function(html){  
                        $("#upd").html(html);  
                    }  
                });  
                return false;  
            }); 				
        });  
    </script>
Не будут ли конфликтовать две одинаковых функции $(document).ready (а ведь они скорее всего будут конфликтовать) и как решить этот конфликт?
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Старый 13.08.2012, 13:06   #8
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Однако, если форму listForm создавать не динамически с помощью скрипта, а просто запихать в html файл, то всё прекрасно работает.
И как по вашему должен был работать клик, который привязывается к несуществующему элементу?
Сперва создаем элемент, затем привязываем событие.
Либо привязывайте через .live()
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 13.08.2012, 13:12   #9
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Цитата:
Или я что-то не понимаю?
Да вы что-то не понимаете. Приводите целиком весь код ... и html и js , причем в той же последовательности, как оно все выводится на страницу + то как создаете эту свою "динамическую" форму
Cronos20 вне форума Ответить с цитированием
Старый 13.08.2012, 13:12   #10
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
И как по вашему должен был работать клик, который привязывается к несуществующему элементу?
Сперва создаем элемент, затем привязываем событие.
Либо привязывайте через .live()
Всё методом тыка же. Изучение новой технологии начинается в тот момент, когда её вдруг приходится использовать. Мне уже помогли в другом месте, всё оказалось куда более тривиально.
Код:
<html>
  <body>
   <ul>
    <li onclick="confirmUpdate('1')">Вася</li>
	<li onclick="confirmUpdate('2')">Петя</li>
	<li onclick="confirmUpdate('3')">Федор</li>
	<li onclick="confirmUpdate('4')">Даша</li>
   </ul>
  </body>
  
  <script>
   function confirmUpdate(recordId){     
	 if (confirm("Обновляем эту запись")) {      
              $.ajax({  
                    type: "GET",  
                    url: "update.php",  
                    data: "person_id="+recordId,   
                    success: function(html){  
                        $("#content").html(html);  
                    }  
                });  	  
    } else {
     alert("Пока!");
    }
   }
  </script>
</html>
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax jquery php gunsoy JavaScript, Ajax 17 13.01.2014 14:33
Ajax запрос (jQuery) Newpitbull JavaScript, Ajax 3 14.04.2012 21:25
ajax запрос в jquery Qaliti JavaScript, Ajax 7 06.03.2012 23:20
jquery ajax gunsoy JavaScript, Ajax 5 11.10.2011 21:59
Конфликт JQuery and Ajax 3dg_fan Помощь студентам 0 07.06.2011 08:34