Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не работает Ajax/Jquery
Форумы портала PHP.SU » » Вопросы новичков » Не работает Ajax/Jquery

Страниц (2): [1] 2 »
 

1. lamokk - 29 Марта, 2016 - 14:49:10 - перейти к сообщению
Здравствуйте.
Есть страница на которой происходить авторизация и выход пользователя (все на Ajax/Jquery) без перезагрузки страницы.

Если пользователь входит, меняется часть страницы и появляется ссылка на выход и если на нее нажать сразу после входа то выход не происходить.
И наоборот, если авторизованый пользователь нажимает выход и потом сразу пытается авторизоваться, то ничего не происходить.

Подскажите в чем проблема?
Сама страница
CODE (html):
скопировать код в буфер обмена
  1. <!doctype html>
  2. <html>
  3. <head>
  4. </head>
  5.  <body>
  6. <div class="enter"><?=$enter?></div>
  7. <script type="text/javascript" src="/js/login.js"></script>
  8. </body>
  9. </html>


<?=$enter?> это
CODE (html):
скопировать код в буфер обмена
  1. <p>Авторизоваться</p>
  2. <form id="myForm">
  3.     <ul>
  4.         <li><input type="username"  id="username" name="username" placeholder="yourname@email.com" required></li>
  5.         <li><input type="password"  id="password" name="password" placeholder="password" required></li>
  6.         <li><a href="" id="ggg">Вход</a></span></li>
  7.     </ul>
  8. <input type="hidden"  id="do" name="do" value="enter">
  9. </form>


Код login.js
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function(){
  2.  
  3.    $("#ggg").click(function(event){
  4.       event.preventDefault();
  5.    });
  6.  
  7.             $("#ggg").click(function(){  
  8.                 $.ajax({  
  9.                     type: "POST",  
  10.                     url: "/php-ajax/login.php",  
  11.                     data: "username="+$("#username").val()+"&password="+$("#password").val()+"&do="+$("#do").val(),    
  12.                     success: function(html){  
  13.                         $(".enter").html(html);  
  14.                     }  
  15.                 });  
  16.                 return false;  
  17.             });  
  18.  
  19.  
  20. });


Дополню, может станет яснее в файле login.php делаю просто echo '5555' и он срабатывает через раз при нажатии кнопки войти.
2. IllusionMH - 29 Марта, 2016 - 14:55:44 - перейти к сообщению
lamokk, а после того как вставляете новый HTML кто должен позаботиться о том, чтобы по новой навесить обработчики событий на новую кнопку?
читайте про делегирование событий и метод .on в jQuery
а еще там есть метод .serialize()
3. lamokk - 29 Марта, 2016 - 15:11:25 - перейти к сообщению
IllusionMH пишет:
lamokk, а после того как вставляете новый HTML кто должен позаботиться о том, чтобы по новой навесить обработчики событий на новую кнопку?
читайте про делегирование событий и метод .on в jQuery
а еще там есть метод .serialize()

Поясните если можно, лучше с примером.
т.к. сделав изменения, ничего не изменилось:
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function(){
  2.  
  3.    $("#ggg").click(function(event){
  4.       event.preventDefault();
  5.    });
  6.  
  7. $('#ggg').on('click', function(){
  8.                 $.ajax({  
  9.                     type: "POST",  
  10.                     url: "/php-ajax/login.php",  
  11.                     data: "username="+$("#username").val()+"&password="+$("#password").val()+"&do="+$("#do").val(),    
  12.                     success: function(html){  
  13.                         $(".enter").html(html);  
  14.                     }  
  15.                 });  
  16.                 return false;  
  17.             });  
  18.  
  19.  
  20. });
4. 3d_killer - 29 Марта, 2016 - 15:46:24 - перейти к сообщению
а не проще данные как сказал IllusionMH

и послать, тогда не надо будет думать о скрипте при добавлении новых полей
5. lamokk - 29 Марта, 2016 - 15:55:41 - перейти к сообщению
3d_killer пишет:
а не проще данные как сказал IllusionMH

и послать, тогда не надо будет думать о скрипте при добавлении новых полей

Это как бы отвлечение от темы...
Вопрос в решении срабатывании на второй раз подряд...
6. 3d_killer - 29 Марта, 2016 - 16:00:20 - перейти к сообщению
он и по поводу этого сказал
CODE (javascript):
скопировать код в буфер обмена
  1. $("#ggg").click(function

надо так везде
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).on('click',"#ggg",function()
  2. {
  3.  
  4. });
7. lamokk - 29 Марта, 2016 - 16:10:34 - перейти к сообщению
3d_killer пишет:
он и по поводу этого сказал
CODE (javascript):
скопировать код в буфер обмена
  1. $("#ggg").click(function

надо так везде
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).on('click',"#ggg",function()
  2. {
  3.  
  4. });


Сделал так: но теперь вообще не работает

CODE (javascript):
скопировать код в буфер обмена
  1. $(document).on('click', '#ggg', function()
  2.  
  3.    $("#ggg").on('click', function(event){
  4.       event.preventDefault();
  5.    });
  6.  
  7.             $("#ggg").on('click', function(){  
  8.                 $.ajax({  
  9.                     type: "POST",  
  10.                     url: "/php-ajax/login.php",  
  11.                     data: "username="+$("#username").val()+"&password="+$("#password").val()+"&do="+$("#do").val(),    
  12.                     success: function(html){  
  13.                         $(".enter").html(html);  
  14.                     }  
  15.                 });  
  16.                 return false;  
  17.             });  
  18.  
  19.  
  20. });


Где ошибка то?
8. 3d_killer - 29 Марта, 2016 - 16:11:21 - перейти к сообщению
ну так а это зачем менять?
CODE (html):
скопировать код в буфер обмена
  1. $(document).ready(function(){
9. lamokk - 29 Марта, 2016 - 16:13:00 - перейти к сообщению
3d_killer пишет:
ну так а это зачем менять?
CODE (html):
скопировать код в буфер обмена
  1. $(document).ready(function(){


Все равно не срабатывает на второй раз! Что не так?
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function(){
  2.  
  3.    $("#ggg").on('click', function(event){
  4.       event.preventDefault();
  5.    });
  6.  
  7.             $("#ggg").on('click', function(){  
  8.                 $.ajax({  
  9.                     type: "POST",  
  10.                     url: "/php-ajax/login.php",  
  11.                     data: "username="+$("#username").val()+"&password="+$("#password").val()+"&do="+$("#do").val(),    
  12.                     success: function(html){  
  13.                         $(".enter").html(html);  
  14.                     }  
  15.                 });  
  16.                 return false;  
  17.             });  
  18.  
  19.  
  20. });
10. 3d_killer - 29 Марта, 2016 - 16:13:12 - перейти к сообщению
и скобки нет, естественно работать не будет
(Добавление)
а где кнопка выход?
11. lamokk - 29 Марта, 2016 - 16:17:55 - перейти к сообщению
3d_killer пишет:
и скобки нет, естественно работать не будет
(Добавление)
а где кнопка выход?

Какой и где скобки нет?
Приведенный выше код работает, но на второй раз не срабатывает(1 раз ввожу неправильные логин пароль, а второй правильные, при втором разе ничего не происходит)!

Выход есть если войдемУлыбка
12. 3d_killer - 29 Марта, 2016 - 16:20:30 - перейти к сообщению
вот это куда выводит ? $(".enter").html(html);
13. lamokk - 29 Марта, 2016 - 16:28:18 - перейти к сообщению
3d_killer пишет:
вот это куда выводит ? $(".enter").html(html);

вот сюда выводим <div class="enter"><?=$enter?></div>
14. 3d_killer - 29 Марта, 2016 - 16:31:27 - перейти к сообщению
а это зачем? $("#ggg").on('click', function(event){
event.preventDefault();
}); если у вас return false прописан?
15. lamokk - 29 Марта, 2016 - 16:34:27 - перейти к сообщению
3d_killer пишет:
а это зачем? $("#ggg").on('click', function(event){
event.preventDefault();
}); если у вас return false прописан?

Это отменяет действие по умолчанию, т.е. отменяет переход по ссылке
просто форма(данные) отправляется по нажатию на ссылку "войти"

 

Powered by ExBB FM 1.0 RC1