Как я могу передать несколько переменных из представления в контроллер, используя ajax jquery - PullRequest
0 голосов
/ 21 марта 2020

Я принимаю данные из формы, которая отображается после выбора одного из параметров раскрывающегося списка. adding marks В контроллере я отправляю модель, где l oop повторяет количество полей в приведенной ниже форме. Я просто хочу вставить одну запись против каждого студента. Но так как он отправляет данные в контроллер несколько раз, он теряет значения и выдает ошибку базы данных. Также

<div class="card mb-3">
          <div class="card-header">
          Set Marks for <b><?php echo $student_name?></b>
          </div>

            <div class="card-body" >
                <form>
                     <div class="form-group row">
                        <label for="oldPassword" class="col-sm-2 col-form-label">Select Term</label>
                        <div class="form-label-group">
                            <select id="exam_term" class="form-control" name="exam_term" >
                                <option value="">Exam</option>
                                <option value="1">First Term  </option>
                                <option value="2">Second Term</option>
                            </select>
                        <span class="text-danger"><?php echo form_error('old_pass')?></span>
                      </div>

                    </div>
                </form>
            </div>
        </div>




            <div  id="formative_marks" style = "display:none" class="card mb-3">
              <div class="card-header">
                Summative Marks
              </div>
                  <?php

                    if($this->session->flashdata('message')){
                        echo '<div class="alert alert-success">
                              '.$message.'</div>';
                    }
                    ?>
                <div class="card-body">

                 <form action="">

                      <div class="form-group row">
                        <label for="oldPassword" class="col-sm-2 col-form-label">Discipline</label>
                        <div class="col-sm-10">
                          <select id="disc" class="form-control" name="disc" >
                                <option value="">Grade</option>
                                <option value="1">A+</option>
                                <option value="2">A</option>
                                <option value="3">B+</option>
                                <option value="4">B</option>
                                <option value="5">C</option>
                                <option value="6">D</option>
                            </select>
                        </div>
                        <span class="text-danger"><?php echo form_error('disc')?></span>
                      </div>

                      <div class="form-group row">
                        <label for="newPassword" class="col-sm-2 col-form-label">Practicals</label>
                        <div class="col-sm-10">
                          <select id="prac" class="form-control" name="prac" >
                                <option value="">Grade</option>
                                <option value="1">A+</option>
                                <option value="2">A</option>
                                <option value="3">B+</option>
                                <option value="4">B</option>
                                <option value="5">C</option>
                                <option value="6">D</option>
                            </select>
                        </div>
                        <span class="text-danger"><?php echo form_error('new_pass')?></span>
                     </div>

                      <div class="form-group row">
                        <label for="passConf" class="col-sm-2 col-form-label">Presentations</label>
                        <div class="col-sm-10">
                        <select id="pres" class="form-control" name="pres" >
                                <option value="">Grade</option>
                                <option value="1">A+</option>
                                <option value="2">A</option>
                                <option value="3">B+</option>
                                <option value="4">B</option>
                                <option value="5">C</option>
                                <option value="6">D</option>
                            </select>
                        </div>
                        <span class="text-danger"><?php echo form_error('pass_conf')?></span>
                     </div>  

                     <div class="form-group row">
                        <label for="passConf" class="col-sm-2 col-form-label">Assignments</label>
                        <div class="col-sm-10">
                        <select id="assi" class="form-control" name="assign" >
                                <option value="">Grade</option>
                                <option value="1">A+</option>
                                <option value="2">A</option>
                                <option value="3">B+</option>
                                <option value="4">B</option>
                                <option value="5">C</option>
                                <option value="6">D</option>
                            </select>
                        </div>
                        <span class="text-danger"><?php echo form_error('pass_conf')?></span>
                     </div>   

                     <div class="form-group row">
                        <label for="passConf" class="col-sm-2 col-form-label">Communication Skills</label>
                        <div class="col-sm-10">
                        <select id="coms" class="form-control" name="coms" >
                                <option value="">Grade</option>
                                <option value="1">A+</option>
                                <option value="2">A</option>
                                <option value="3">B+</option>
                                <option value="4">B</option>
                                <option value="5">C</option>
                                <option value="6">D</option>
                            </select>
                        </div>
                        <span class="text-danger"><?php echo form_error('pass_conf')?></span>
                     </div> 

                     <div class="form-group row">
                        <div class="col-sm-10">
                            <button type="button" id="submit_btn" class="btn btn-primary">Save Grades</button>
                        </div>
                        <span class="text-danger"><?php echo form_error('pass_conf')?></span>
                     </div>


                    </form>
                    </div>


            </div>

<script> 
        $(document).ready(function(){
                $('select').change(function(){
                    var exam_term = $('#exam_term option:selected').text();
                $('#formative_marks').show(1000);

                $('#submit_btn').click(function(){
                                        var form_data = {
                        disc : $('#disc option:selected').val(), 
                        prac : $('#prac option:selected').val(),
                        assi : $('#assi option:selected').val(),
                        coms : $('#coms option:selected').val(), 
                        pres : $('#pres option:selected').val(),
                        exam_term : exam_term,
                        student_id : <?php echo $student_id?>,
                        class_id   : <?php echo $class_id?>,
                        subject_id : <?php echo $subject_id?>,
                        ajax : '1'
                    };

                        $.ajax({
                         type:'ajax',
                         url:'<?= base_url()?>index.php/teacher/set_formative_marks',
                         method: 'post',
                         data : {form_data:form_data},
                         success: function(form_data){

                                    alert (response);
                                    }


                        });


                });


            });
        });
        </script>

1 Ответ

0 голосов
/ 21 марта 2020

В вашем коде много синтаксических ошибок. Вот небольшой фрагмент, который я использую, когда $ .ajaxing. Я бы предложил интегрировать этот код (вы можете убрать вещи из очереди запросов, если хотите), а затем, если у вас все еще возникают проблемы и / или возникают «ошибки базы данных», go вперед и обновить ваш вопрос, включив в него спецификацию c ошибка, которую вы получаете из базы данных.

Если у вас возникают проблемы с поддержанием состояния (и вы теряете фрагменты данных), возможно, сохраните их в скрытых входах или с помощью атрибута «data» (см. jquery $ .data).

Дайте мне знать, если это имеет смысл и удачи. :)

//Set this var to max requests in queue.
var ajaxMax = 5;

var ajaxActive = 0;
$( document ).ajaxStart(function() {
  ajaxActive++;
  document.ajaxRunning = ajaxActive > 0;
  document.ajaxQueueFull = ajaxActive > ajaxMax;
});
$(document).ajaxStop(function() {
  ajaxActive--;
  document.ajaxRunning = ajaxActive > 0;
  document.ajaxQueueFull = ajaxActive > ajaxMax;
}

var request = $.ajax({
    type: 'POST',
    url: 'someurl',
    data: myDataObj,
    success: function(result){}
});

while(request === null && (request.readyState < 1 || request.readyState > 4)) {
    if (document.ajaxQueueFull) {
      //abort existing requests
      $.each(request as v) {
         v.abort();
      }
    }
    pendingAjax.push(request);
}


$.when.apply($, pendingAjax).done( successCallback ).fail( failCallback)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...