[AJAX] Опрос с динамически формируемыми вариантами ответов

Тема в разделе "PHP", создана пользователем dig555, 20 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Все, я думаю, знают этот старый прикол с большой красной кнопкой. Если кто не знает - смотрите Задача - организовать что-то подобное средствами AJAX + PHP. Главное: на каждой странице "опроса" может быть не одна кнопка с надписью, а выбор из нескольких вариантов ответа (возможно с картинкой), от выбора которых будет зависеть следующий вопрос или фраза "искусственного интеллекта" :). Естественно страница перезагружаться не должна.
    Перерыл пол гугла, ничего толкового не нашёл. По сути должны же быть примеры к каким-то AJAX/JQuery либам для создания многоуровневых опросов.
    Очень прошу подкинуть ссылки на исходники решения подобных задач. Желательно, чтобы это был пример в составе какой-то библиотеки.
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    562
    Вообще задача не такая уж и сложная-
    берём какой-нить ajax опрос который формирует опрос на внешних данных xml или json. Эти данные надо сделать чтобы формировал php, основываясь на данных которые послал юзер. А в самом ajax на место обработки отсылки запроса- принять данные и занаво сформировать опрос.
    Но скорее всего тебе подойдёт не опрос а тест. Прогугли на тему теста
     
  3. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Спасибо, конечно, но и по тестам всё равно ничего толкового не нашёл. :( Мне бы ссылочку :ah:
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    например сделать с jquery, который загружает новую форму после каждого выбора ответа (нажатием на radio кнопку).

    HTML:
    
    //функция загрузки файла через ajax, содержимое показать в элементе id="form"
    function load_data(form_id){
        $.ajax({
            type: "POST",
            url: "data.php",
            data: $(form_id).serialize(),
            cache: false,
            success: function(html){
                $(form_id).html(html);
                $("#form input[type='radio']").click(function(){
                    load_data("#form");
                });
            }
        });
    }
    
    //загрузка данных
    $(document).ready(function(){
        load_data("#form");
    });    
    
    Загружается php файл в котором идёт проверка вопросов и ответов и отправляется содержимое для формы.
     

    Вложения:

    dig555 нравится это.
  5. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Ай, молодец :ay: То, что нужно - респект тебе.


    Остался только один вопрос.
    Ответ передаётся через выбор radio button'a:
    <label><input name="answer" type="radio" value="1" /> Да</label>
    Мне же бы хотелось, чтобы иногда всесто радиокнопок, я мог вставлять картинки, при нажатии на которые происходил выбор варианта ответа.
    Понятно, что конструкция <input name="answer" type="image" value="1" /> не прокатывает.

    Вижу два варианта:
    1). С помощью css абсолютно позицинировать картинку с кнопкой под радиокнопкой соответсвующего размера. Проблема в том, что радиокнопка отчётливо видна на нарисованной кнопке. При шаманстве с display и visibility на нажатия не реагирует.
    2). Использовать для radiobutton в качестве background-image нарисованную кнопку. Чё-то тоже не фурычет.

    Подскажите, пожалуйста.
     
  6. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    362
    Симпатии:
    148
    Ответ на последний вопрос всё ещё требуется.
     
  7. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
  8. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    чтоб не кодить для каждого элемента сделать например так, универсально для любого елемента по которому кликают, отслеживать клики на элементы с классом class="answer", брать значение id элемента как ответ и записывать в спрятанное поле answer и дальше отсылать форму.
    форма со спрятанным полем
    HTML:
    
            Вопрос №0, твой ответ:<br />
            <img src="https://www.nulled.cc/image.php?u=23755&dateline=1210515156" id="1" class="answer" />
            <br /><br />
            <img src="https://www.nulled.cc/image.php?u=23755&dateline=1210515156" id="2" class="answer" />
            <br /><br />
            <img src="https://www.nulled.cc/image.php?u=23755&dateline=1210515156" id="3" class="answer" />
            <input name="answer" type="hidden" value="" />
    
    jquery отслеживает клики
    HTML:
    
                $(form_id+" .answer").click(function(){
                    //значение id нажатого элемента записывается в спрятанное поле answer
                    $(form_id+" input[name=answer]").attr("value", $(this).attr("id"));
                    //отправка данных
                    load_data(form_id);
                });
    
    так что теперь можно кликать любой хтмл тег: картинка, чекбокс и т. д. Главное чтоб был указан класс и ид.
     

    Вложения:

    dig555 нравится это.
  9. oneathome

    oneathome

    Регистр.:
    6 фев 2007
    Сообщения:
    159
    Симпатии:
    5
    ajax_voprosy и 2 все в utf-8 переключал в другие всё равно выводит выбран РѕС‚РІРµС только что получил почту от moemesto с такими же что делать
    Залил на сервер всё ок а на локалки проблемы. В Вин ли или Вирусе или где ещё? "кис9 лицензия"
    polyetilen Спасибо! очень доходчиво
     
  10. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    если денвер то у него в настройках апача по умолчанию установлена кодировка windows-1251 зачем-то, так апач всё в этой кодировке отправляет если другая не указана.

    можно в настройках
    Z:\usr\local\apache\conf\httpd.conf
    закоментировать с символом # строку
    #AddDefaultCharset windows-1251

    ещё можно там где файлы вопросов добавить файл .htaccess с содержимым:
    AddDefaultCharset utf-8

    или просто добавить в начало файла data.php:

    PHP:
    //выкл. кэширование
    header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    header ("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); // always modified
    header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header ("Pragma: no-cache"); // HTTP/1.0
    //кодировка
    header('Content-Type: text/plain; charset=utf-8');
    header('Accept-Ranges: bytes');
     
    oneathome нравится это.
Статус темы:
Закрыта.