Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2016, 11:47
Новичок на форуме
Отправить личное сообщение для alexgerber Посмотреть профиль Найти все сообщения от alexgerber
 
Регистрация: 10.03.2016
Сообщений: 6

Помогите правильно подключить jquery ajax
Добрый день.
Есть страница - опросник, где пользователь читает вопрос, нажимает "да" или "нет", после чего его ответ передается аяксом на сервер. С сервера возвращается новый вопрос И НОВЫЕ КНОПКИ "ДА" И "НЕТ", к которым скрипт уже не может подключится. Как сделать, что бы скрипт подключался к новоприбывшим кнопкам (подключение идет по классу кнопки)?

КОД КНОПКИ:

<button type="submit" name="user_answer" value="0" class="answer_button">Нет</button>


КОД JS, подключается в футере страницы опросника:

$(document).ready(function(){
    $(".answer_button").click(function(){
        var msg = $(this).val();
            $.ajax({
                type: 'POST',
                url: 'index.php',
                data: 'user_answer=' + msg + '&ajax=on',
                success: function(data) {
                $('.content').html(data);
            },
            error:  function(xhr, str){
                alert('Error ' + xhr.responseCode);
            }
        });
    });
});


Кнопки должны приходить с сервера, оставить их на странице не могу. Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2016, 12:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Кнопки сами по себе или же форма?
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2016, 12:23
Новичок на форуме
Отправить личное сообщение для alexgerber Посмотреть профиль Найти все сообщения от alexgerber
 
Регистрация: 10.03.2016
Сообщений: 6

Кнопки в форме:

<form method="POST" action="javascript:void(null);" class="ans_buttons">
<button type="submit" name="user_answer" value="1" class="answer_button">Да</button>
<button type="submit" name="user_answer" value="0" class="answer_button">Нет</button>
</form>
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2016, 12:25
Новичок на форуме
Отправить личное сообщение для alexgerber Посмотреть профиль Найти все сообщения от alexgerber
 
Регистрация: 10.03.2016
Сообщений: 6

Сообщение от alexgerber Посмотреть сообщение
Кнопки в форме:

<form method="POST" action="javascript:void(null);" class="ans_buttons">
<button type="submit" name="user_answer" value="1" class="answer_button">Да</button>
<button type="submit" name="user_answer" value="0" class="answer_button">Нет</button>
</form>
Форма тоже приходит с сервера (с кнопками).
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2016, 12:33
Новичок на форуме
Отправить личное сообщение для alexgerber Посмотреть профиль Найти все сообщения от alexgerber
 
Регистрация: 10.03.2016
Сообщений: 6

В свою очередь форма является потомком блочного элемента
<div class="content"></div>

Который является частью статичного содержимого страницы.
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2016, 12:49
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

alexgerber,
Попробуйте вместо :
09        $('.content').html(data);

Это:
$(data).find('form.ans_buttons').appendTo('.content:last');
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2016, 12:53
Новичок на форуме
Отправить личное сообщение для alexgerber Посмотреть профиль Найти все сообщения от alexgerber
 
Регистрация: 10.03.2016
Сообщений: 6

РЕШЕНО использованием jquery функции on()
$(".content").on('click','.answer_button' , function(){
var msg = $(this).val();
$.ajax({
url: 'index.php',
data: 'user_answer=' + msg + '&aj=on',
success: function(data) {
$('.content').html(data);
},
error:  function(xhr, str){
alert('Error ' + xhr.responseCode);
}
});
});


Пояснение кода: для работы с динамически подгружаемым контентом, указывается статический родитель подгружаемого контента (в моем случае это ".content"), в функции on() вторым аргументом передается нужный элемент.
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2016, 13:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от alexgerber
Пояснение кода: для работы с динамически подгружаемым контентом, указывается статический родитель подгружаемого контента
Это называется делегирование, и уж коли форма, то лучше

<form method="POST" class="ans_buttons">


$(".content").on('submit','form.ans_buttons' , function(e){
    e.preventDefault()
     $.ajax({
        url: 'index.php',
        data: $(this).serialize() + '&aj=on',
        success: function(data) {
           $('.content').html(data);
        },
        error:  function(xhr, str){
           alert('Error ' + xhr.responseCode);
        }
    });
});
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2016, 13:25
Новичок на форуме
Отправить личное сообщение для alexgerber Посмотреть профиль Найти все сообщения от alexgerber
 
Регистрация: 10.03.2016
Сообщений: 6

Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какая разница между post запросами jquery и ajax? Rooner jQuery 2 18.06.2012 14:29
Помогите доработать навигацию jquery слайдера dima-f1 jQuery 0 29.02.2012 19:36
Объекты, сформированные Ajax запросом не попадают в выборки jQuery AdeL1ne AJAX и COMET 1 13.02.2012 09:44
Как правильно использовать jQuery lightBox vishnu Элементы интерфейса 2 11.11.2009 07:00
Как правильно подгрузить jQuery Siton jQuery 4 15.06.2009 09:54