Мои ранее отредактированные данные редактируются снова, когда я обновляю вторые данные в codeigniter, используя ajax - PullRequest
0 голосов
/ 31 декабря 2018

Я использую codeigniter Framework для разработки своего проекта.Я также использую AJAX для редактирования данных.Когда я редактирую первые данные, они редактируются правильно, но когда я обновляю вторые данные без обновления браузера, тогда предыдущие отредактированные данные или текущие данные редактирования обновляются с новым результатом.Пожалуйста, решите мою проблему.Заранее спасибо.

function editFunction(id)
  {
    $.ajax({
            url: "edit_result/" +id,
            data: {id:id},
            type: "post",
            async: false,
            dataType: 'json',
            success: function(response){
                $('#reg_no').val(response.reg);
                $('#total_marks').val(response.tot_marks);
                $('#grade').val(response.grade);
                   },
                   error: function()
                   {
                    alert("error");
                   }
          });
    $('#updateBtn').click(function(event){
      event.preventDefault();
        var grade_id =  document.getElementById("grade").value;
        var total_id =  document.getElementById("total_marks").value;
           if(grade_id=='' || total_id=='')
           {
            $('#updateBtn').prop('disabled',true);
            setTimeout(function(){document.getElementById("updateBtn").disabled = false;},2000);
            $('.message').html('Please fill all fields').fadeIn().delay(1000).fadeOut('slow');;
           }
           else
           {
      $.ajax({
            url: "edit_result_valid/" +id,
            data: $(this).serialize(),
            type: "post",
            async: false,
            dataType: 'json',
            success: function(response){
               alert('success');
                   },
                   error: function()
                   {
                    alert("error");
                   }
          });
    }
    });

  }

Я выполняю операцию редактирования модального режима.Пожалуйста, проверьте также HTML-код

  <div class="modal fade" id="editModal">
      <div class="modal-dialog">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">&times;</span></button>
            <h2 class="modal-title">Edit Result</h2>
            <p class="message" style="color: red;"></p>
          </div>
          <div class="modal-body">
          <form role="form" id="updateForm">
          <div class="box-body">
            <div class="form-group">
              <label for="exampleInputEmail1">Reg No :</label>
              <input type="text" class="form-control" id="reg_no" readonly="">
            </div>
            <div class="row">
              <div class="col-sm-6">
            <div class="form-group">
              <label>Total Marks :</label>
              <input type="number" class="form-control" id="total_marks" placeholder="Enter total marks" onfocus="colorFunction(this)" name="tot_marks">
            </div>
          </div>
          <div class="col-sm-6">
            <div class="form-group">
              <label>Grade</label>
              <?php
                  $firstItem[''] = 'Please select one...';
                  $options = array(
                    'A++'    => 'A++ (90% & above)',
                    'A+'     => 'A+ (80% to 89%)',
                    'A'      => 'A (60% to 79%)',
                    'B+'     => 'B+ (50% to 59%)',
                    'B'      => 'B (40% to 49%)',
                  );
                  $options = array_merge($firstItem, $options);
                  $selected_option = $this->input->post('grade', TRUE);
                  echo form_dropdown('grade', $options,$selected_option,['class'=>'form-control','id'=>'grade','onfocus'=>'colorFunction(this)']); ?>
            </div>
          </div>
          </div>
        </div>
          <!-- /.box-body -->
        </form>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-danger pull-left" data-dismiss="modal">Cancel</button>
             <button type="submit" class="btn btn-success pull-right" data-dismiss="modal" id="updateBtn">Update</button>
          </div>
        </div>
        <!-- /.modal-content -->
      </div>
      <!-- /.modal-dialog -->
    </div>
    <!-- /.modal -->  

Ответы [ 2 ]

0 голосов
/ 03 января 2019

сначала сыграйте в игру.Я думаю, вы не используете первичный ключ БД для обновления.Позвольте мне объяснить.

на виду: еще один элемент ввода, тип которого скрыт и имеет значение вашего первичного ключа.присвойте ему идентификатор со значением tbl_id пример

<input type="hidden" value="<?php echo {variable that has your primary key } ?>" id="tbl_id" >

и при вызове ajax перед тем, как вы начнете его писать

var id = $("#tbl_id").val();

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

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

if($id != '') { // $id is what you have shared via ajax call
 $this->model_name->update_function($id,$array); // $array is all other fields as per codeigniter need
} else { echo "unable to capture id"; exit; }

и в последний раз вы обновляете модель ..

всесделано ajax :)

0 голосов
/ 02 января 2019

У меня есть ответ на мой вопрос.Я использую off ('click') в коде, вы можете увидеть код обновления ниже.

 $('#updateForm').off('click','#updateBtn').on('click','#updateBtn',function(event){
      event.preventDefault();
        var grade_id =  document.getElementById("grade").value;
        var total_id =  document.getElementById("total_marks").value;
           if(grade_id=='' || total_id=='')
           {
            $('#updateBtn').prop('disabled',true);
            setTimeout(function(){document.getElementById("updateBtn").disabled = false;},2000);
            $('.message').html('Please fill all fields').fadeIn().delay(1000).fadeOut('slow');;
           }
           else
           {
      $.ajax({
            url: "edit_result_valid/" +id,
            data: $("#updateForm").serialize(),
            type: "post",
            async: false,
            dataType: 'json',
            success: function(response){
              if(response=='1')
              {
                $('.alert-success').show();
                $('.alert-success').html('Result Updated Successfully').fadeIn().delay(4000).fadeOut('slow');
               $('#example1').DataTable().ajax.reload();s
              }
              },
                   error: function()
                   {
                    alert("error");
                   }
          });
    }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...