Публикация и эхо-данные в php и ajax

Страница включает 2 шага в виде div, каждый из которых упоминается с идентификатором step1, step2. Я хочу, чтобы, когда я нажимаю кнопку (названную step1button) на шаге 1, данные на шаге 2 будут отображаться на основе данных, отправленных на шаге 1, но с использованием ajax.

Теперь проблема в том, что когда я отправляю данные через ajax, после этого запускается код Php, но значение переменных не отображается на шаге 2 на странице, а в режиме проверки в предварительном просмотре сети появляются значения.

код здесь

<!DOCTYPE html>
<html>
<head>
    <script src = "plugins/jquery/jquery.min.js"></script>
</head>
<body>
<form method = "POST" id = "step1">
    <select id = "coursename" name = "coursename">
        <option>BCA</option>
        <option>BBA</option>
    </select>
    <select id = "session" name = "session">
        <option>2016</option>
        <option>2017</option>
    </select>
    <button type = "button" id = "step1button" name = "step1button">NEXT</button>
</form>
<div  id = "step2">
    <h2>STEP-2</h2>
    <?php
    if (isset($_POST['step1'])) {
        $coursename = $_REQUEST['coursename'];
        $session= $_REQUEST['session'];
        $startdate= $session.'-'.'8';
        $enddate=date('Y-m');
        $storestartdate=strtotime($startdate);
        $storeenddate=strtotime($enddate);
        $monthdiff= 0;
        while (($storestartdate = strtotime('+1 MONTH', $storestartdate)) <= $storeenddate){
            $monthdiff++;
        }
        switch ($monthdiff) {
            case $monthdiff < 5:
            $semester=1;
            break;
            case $monthdiff < 11:
            $semester=2;
            break;
            case $monthdiff < 17:
            $semester=3;
            break;
            case $monthdiff < 23:
            $semester=4;
            break;
            case $monthdiff < 29:
            $semester=5;
            break;
            case $monthdiff < 35:
            $semester=6;
            break;
        }
    }
    ?>
    <div>CLASS <?php echo $coursename.$semester?></div>
    <div>SESSION <?php echo $session?></div>
</div>
    <script>
        $(document).ready(function(){
            $("#step1").show();
            $("#step2").hide();
            $("#step3").hide();
            $("#step1button").click(function(){
                var coursename = $("#coursename").val();
                var session = $("#session").val();
                console.info(coursename);
                console.info(session);
                if (coursename= = "" || session= = ""){
                    $("#alert").html("<div class='alert bg-pink'>Please select coursename and session</div>");
                    $("#coursename,#session").css('border-bottom','2px solid #E91E63');
                }
                else{
                    $.ajax({
                        method:'POST',
                        data:{step1:1,coursename:coursename,session:session},
                        success:function(){
                            $("#step2").show();
                            $("#step1").hide();
                        }
                    });
                }
            });
        });
    </script>
</body>
</html>

Добро пожаловать в Stack Overflow! Ваш Код довольно длинный и не самодостаточный. Например, что написано в common_php_files/as_head.php? Если другие люди не могут воспроизвести вашу проблему, они, вероятно, не смогут вам помочь. Поэтому я рекомендую вам предпринять несколько шагов, чтобы улучшить свой вопрос. (1) Обязательно возьмите тур и прочтите наше руководство для начинающих Как спросить. (2) Создайте уменьшенную версию своего кода, имеющую ту же проблему и которую каждый может запустить на своих машинах. Если другие могут ее запустить, они могут возиться, пока не решат ее.

akraf 13.06.2018 15:52

Также не включайте изображения кода. Он не может быть скопирован и не может быть прочитан людьми, использующими программы чтения с экрана.

akraf 13.06.2018 15:54

Кроме того, вы можете отлаживать свой код Javascript, включая вставку точек останова, используя ответы из этот вопрос

akraf 13.06.2018 15:55

хорошо, я воспроизведу свою проблему и отправлю ее снова

parmpreet singh 17.06.2018 14:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
56
1

Ответы 1

Вы публикуете только значения с помощью ajax, но не оцениваете ответ. Это не то, как работает ajax.

В настоящее время содержимое каждых трех шагов выполняется при первом рендеринге страницы. Но поскольку вы устанавливаете только $coursename и $step, при отправке $_POST['step1'] это оценивается как неопределенная ошибка переменной.

Итак, как вы могли бы исправить эту проблему? Есть два варианта (может и больше ..)

  1. Запрос ajax возвращает содержимое шага 2/3 в своем ответе, и вы заменяете его внутри js success-функции.

  2. Вы предварительно визуализируете другие шаги с фиктивными полями, а ответ ajax содержит данные json, которые можно использовать для заполнения фиктивных полей фактическим содержимым. Это также должно быть сделано внутри функции success.

В каждом случае, если вы хотите использовать ajax, вам также нужно позаботиться об ответе вашего ajax-запроса.

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

parmpreet singh 18.06.2018 14:08

Решение вашей проблемы слишком велико для этой платформы. Я могу только дать вам совет, чтобы начать с простого учебника по ajax, чтобы изучить основы. Оттуда вы можете продолжить и задать конкретные вопросы.

Philipp 18.06.2018 14:20

Другие вопросы по теме