Как назначить переменные AJAX для нескольких кнопок - PullRequest
2 голосов
/ 01 апреля 2019

У меня есть ajax-код с php SQL, где я пытаюсь, чтобы три кнопки меняли имя «запланированного» столбца в зависимости от значения: да (1), нет (0), отменено (2).

Запланированная кнопка имеет цель данных и роль данных. после нажатия появляется модал, содержащий три кнопки (да, нет, отмененные), каждая из которых имеет свой уникальный идентификатор, который будет использоваться в ajax.

У меня есть три функции для имен идентификаторов, каждая из которых также имеет переменную 0, 1 или 2.

Проблема в том, что эти переменные не запускают обновление.

У меня просто есть только 2 файла: index.php для основных кодов и connection.php для ссылки на базу данных и обновления sql.

вывод таблицы table

модальный

modal

база данных (ajax_test)

ajax_test

index.php (таблица)

 <?php
        $table  = mysqli_query($connection ,'SELECT * FROM user');
        while($row  = mysqli_fetch_array($table)){ ?>
            <tr id="<?php echo $row['id']; ?>">
              <td data-target="email"><?php echo $row['email']; ?></td>

              <td data-target="scheduled">

              <?php
                if ($row['scheduled'] == 1) {
               ?>

              <a href="#" data-role="update" data-id="<?php echo $row['id'] ;?>">YES</a>

             <?php
               } else if ($row['scheduled'] == 0) {
               ?>

              <a href="#" data-role="update" data-id="<?php echo $row['id'] ;?>">NO</a>

             <?php
           } else if ($row['scheduled'] == 2) {
               ?>

              <a href="#" data-role="update" data-id="<?php echo $row['id'] ;?>">CANCELLED</a>

             <?php } ?> </td> </tr> <?php } ?>

index.php (модальное всплывающее окно)

    <!-- Modal-->
    <div id="myModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

   <!-- Modal content-->
   <div class="modal-content" style="width: 300px; margin: 0 auto;">
     <div class="modal-header">
       <button type="button" class="close" data-dismiss="modal">&times;</button>
     </div>
     <div class="modal-body">
       <div class="form-group">
         <a href="#" id="update_yes" class="btn btn-success text-center center-block">YES</a><br>
         <a href="#" id="update_no" class="btn btn-danger text-center center-block">NO</a><br>
         <a href="#" id="update_cancelled" class="btn btn-warning text-center center-block">CANCEL</a>
       </div>

     </div>
   </div>

 </div>

index.php (ajax)

 <script>
  $(document).ready(function(){

   $(document).on('click','a[data-role=update]',function(){
         var id  = $(this).data('id');
         var scheduled  = $('#'+id).children('td[data-target=scheduled]').text();

         $('#scheduled').val(scheduled);
         $('#userId').val(id);
         $('#myModal').modal('toggle');
   });


 $('#update_no').click(function(){
    var id  = $('#userId').val();
    var scheduled = $('0').val();

    $.ajax({
        url      : 'connection.php',
        method   : 'post',
        data     : {scheduled: scheduled , id: id},
        success  : function(response){
                      // now update user record in table
                       $('#'+id).children('td[data-target=scheduled]').text(scheduled);
                       $('#myModal').modal('toggle');

                   }
    });
 });

 $('#update_yes').click(function(){
    var id  = $('#userId').val();
    var scheduled = $('1').val();

    $.ajax({
        url      : 'connection.php',
        method   : 'post',
        data     : {scheduled: scheduled , id: id},
        success  : function(response){
                      // now update user record in table
                       $('#'+id).children('td[data-target=scheduled]').text(scheduled);
                       $('#myModal').modal('toggle');

                   }
    });
 });

 $('#update_cancelled').click(function(){
    var id  = $('#userId').val();
    var scheduled = $('2').val();

    $.ajax({
        url      : 'connection.php',
        method   : 'post',
        data     : {scheduled: scheduled , id: id},
        success  : function(response){
                      // now update user record in table
                       $('#'+id).children('td[data-target=scheduled]').text(scheduled);
                       $('#myModal').modal('toggle');

                   } }); }); }); </script>

connection.php

<?php
$connection =   mysqli_connect('localhost' , 'root' ,'' ,'ajax_test');

if(isset($_POST['id'])){

    $id = $_POST['id'];
    $scheduled = $_POST['scheduled'];

    $result  = mysqli_query($connection , "UPDATE user SET scheduled = '$scheduled' WHERE id='$id'");
}
?>

Я хотел бы знать, что не так с функциями ajax, любая помощь будет признательна.

1 Ответ

0 голосов
/ 15 мая 2019

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

var scheduled = 0;

Вы пытаетесь получить идентификатор пользователя путем доступа к ним с помощью:

var id  = $('#userId').val();

Вы не показываете никаких элементов с id = "userId"

Вместо этого используйте:

$(this).attr("data-id")

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...