Публиковать и отображать данные в php и ajax - PullRequest
0 голосов
/ 13 июня 2018

Страница включает в себя 2 шага в форме div, каждый div упоминается с id step1, step2.Я хочу, чтобы, когда я нажимал на кнопку (названную как кнопка step1) шага 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.log(coursename);
                console.log(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>

1 Ответ

0 голосов
/ 13 июня 2018

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

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

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

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

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

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

...