Лучший способ собрать пользовательские данные на странице, отобразить их на той же странице с сохранением остальной части страницы

#php #jquery #ajax

#php #jquery #ajax

Вопрос:

В настоящее время я создаю веб-приложение, в котором есть один раздел, где пользователь видит диаграмму (которая была извлечена из базы данных диаграмм) и ему предлагается ответить на несколько вопросов. Как только пользователь отправит свой ввод, я хотел бы отобразить его / ее ответы плюс предлагаемые ответы на той же странице.

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

Проблема в том, что после отправки формы (части инструкции else) пользователь все равно должен видеть диаграмму. Я думаю, что мог бы повторно отобразить диаграмму, сохранив идентификатор в $ _SESSION и извлекая его снова в операторе else, но это кажется неуклюжим. Может кто-нибудь порекомендовать, каким был бы наилучший способ сделать это (я открыт для использования jquery или ajax, хотя мне пришлось бы самому набирать скорость на них)?

 if(!isset($_POST['submit']))
    {
        // some code to determine which chart to pull

        if(mysql_num_rows($query))
        {
            while($result = mysql_fetch_array($query))
            {
                $dir = "images/"; // set directory variable

                // open the directory
                if($opendir = opendir($dir))
                {
                    // display the chart to the user

                } 
            }

            // update db table to note that user has seen this problem

        ?>
        <!-- ask for insights -->
        <form action="charts.php" method="POST">

            <input type="text" name="insight[]" placeholder="insight goes here!" />
            <input type="text" name="insight[]" placeholder="more goes here!" />
            <input type="text" name="insight[]" placeholder="don't give up yet" />
            <input type="submit" name="submit" value="Submit data" />
        </form>

        <?php   
        }
        else // throw an error if all questions have been done!
            {
                bringBacktogo($id, $p_type, $count);
            }
    }  

    else
    {

            // some code to show suggested chart insights

            // some code to pull user answers from form above and show them
    } 
  

Комментарии:

1. Переместить ваш обработчик формы на другую страницу и использовать AJAX? Это может показаться чрезмерно упрощенным, но ваш вопрос довольно широкий.

Ответ №1:

попробуйте этот jquery и выполните все, что указано в targetPage.php

 $("#targetDiv").load("targetPage.php",$("#form").serializeArray());
  

Комментарии:

1. Спасибо Sourav. Я не совсем использовал эту реализацию, но ajax и jquery были хорошей комбинацией для адресации.