Проблемы с обновлением Ajax (SQL и расширения)

У меня есть функция обновления ajax с некоторыми специфическими проблемами, я уверен, что ее нужно немного настроить, прежде чем она сработает на 100%.

Я резюмирую вопросы ниже так ясно, как я могу.

У меня есть два файла, которые взаимодействуют друг с другом:

  • заказы.php
  • заказы-claimed.vc.php

мой ajax пытается обновить значение int таблицы на основе нажатия кнопки. НЕТ=0, ДА=1, ОТМЕНА=2.

заказы.php

  • начало страницы

        <?php
          session_start();
          require_once('orders-claimed.vc.php');
         ?>
    
  • столбец таблицы кнопок:

                   <td data-target = "scheduled">
                     <input id='userId' type='hidden'/>
                     <?php
                       if ($rowOrder['scheduled'] == 1) {
                      ?>
    
                      <a href = "#" data-role = "update" data-id = "<?php echo $rowOrder['orderid'] ;?>"><button class = "btn-success">YES</button></a>
    
                     <?php
                   } else if ($rowOrder['scheduled'] == 0) {
                       ?>
                      <a href = "#" data-role = "update" data-id = "<?php echo $rowOrder['orderid'] ;?>"><button class = "btn-danger">NO</button></a>
                     <?php
                   } else if ($rowOrder['scheduled'] == 2) {
                       ?>
                      <a href = "#" data-role = "update" data-id = "<?php echo $rowOrder['orderid'] ;?>"><button class = "btn-warning">CANCELLED</button></a>
                     <?php
                       }
                      ?>
                   </td>
    
  • модальный, используемый для взаимодействия с таблицей

       <!-- 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>
    

  • ajax-код

    <script>
        $(document).ready(function(){
    
      //  append values in input fields
        $(document).on('click','a[data-role=update]',function(){
              var id  = $(this).data('id');
              var scheduled  = $('#'+id).children('td[data-target=scheduled]').text();
    
              $('#userId').val(id);
              $('#myModal').modal('toggle');
        });
    
        // now create event to get data from fields and update in database
    
        $('#update_no').click(function(){
           var id  = $('#userId').val();
           var scheduled = 0;
    
           $.ajax({
               url      : 'orders-claimed.vc.php',
               method   : 'post',
               data     : {scheduled: scheduled , id: id},
               success  : function(response){
                             // now update user record in table
                              $('#'+id).children('td[data-target=scheduled]').html('<a href = "#"><button class = "btn-danger">NO</button></a>');
                              $('#myModal').modal('toggle');
    
                          }
           });
        });
    
        $('#update_yes').click(function(){
           var id  = $('#userId').val();
           var scheduled = 1;
    
           $.ajax({
               url      : 'orders-claimed.vc.php',
               method   : 'post',
               data     : {scheduled: scheduled , id: id},
               success  : function(response){
                             // now update user record in table
                              $('#'+id).children('td[data-target=scheduled]').html('<a href = "#"><button class = "btn-success">YES</button></a>');
                              $('#myModal').modal('toggle');
    
                          }
           });
        });
    
        $('#update_cancelled').click(function(){
           var id  = $('#userId').val();
           var scheduled = 2;
    
           $.ajax({
               url      : 'orders-claimed.vc.php',
               method   : 'post',
               data     : {scheduled: scheduled , id: id},
               success  : function(response){
                             // now update user record in table
                              $('#'+id).children('td[data-target=scheduled]').html('<a href = "#"><button class = "btn-warning">CANCELLED</button></a>');
                              $('#myModal').modal('toggle');
    
                          }
           });
        }); }); 
     </script>
    

Обратите внимание, что весь приведенный выше код находится в одном файле (orders.php).

  • Интерфейс столбца таблицы

Проблемы с обновлением Ajax (SQL и расширения)

  • модальный

Проблемы с обновлением Ajax (SQL и расширения)

  • Имя таблицы SQL "заказ" Проблемы с обновлением Ajax (SQL и расширения)

это мои расширения на странице. большинство из них хранятся в папке и связаны.

   <script src = "../_lib/v/jquery.slim.min.js"></script>

   <script src = "../_lib/v/bootstrap/js/bootstrap.js"></script>

   <script src = "../_lib/v/jquery-ui/jquery-ui.js"></script>

   <script src = "../_lib/v/jscolor/jscolor.js"></script>

   <script src = "js/cms.js"></script>

   <link href = "../_lib/v/bootstrap/css/bootstrap.min.css" rel = "stylesheet">

Ajax не работает под slim.min.js и выдает ошибку «not a function error», поэтому я заменил его на обычную версию jquery из https://code.jquery.com/jquery-3.3.1.js.

ПРОБЛЕМА

Если я переключусь на полную версию jquery, столбец обновится, но сеанс (вошедший в систему пользователь) завершится и автоматически выйдет из системы. Почему это происходит?


Моя вторая проблема заключается в файле orders-claimed.vc.php

db.php

<?php

class config_db {

  public function init() {
    $db = new PDO('*MY DATABASE DETAILS GO HERE*');

    date_default_timezone_set('Hongkong');
    return $db;
  }

}

?>

заказы.claimed.vs.php

  • подключение к базе данных:

       $routePath = "../";
    
       require_once($routePath . "_config/db.php");
         $dbConfig = new config_db();
         $db = $dbConfig->init();
    
  • обновление SQL

     if (isset($_POST['id'])){
    
      $orderid = $_POST['id'];
      $scheduled = $_POST['scheduled'];
    
      $stmt = $db->prepare("UPDATE order SET scheduled = '$scheduled' WHERE orderid = '$orderid'");
      $stmt->execute(); }
    

ПРОБЛЕМА

приведенный выше код SQL не обновляет таблицу (та, что показана на скриншоте, но ajax просто обновляет внешний вид кнопки из функций успеха (он возвращается к исходному значению при обновлении страницы). Я хотел бы знать, что это проблема Он должен подключаться к кнопкам, так как он использует «if (isset ($ _ POST ['id'])»).

Надеюсь, я дал четкое объяснение своим двум проблемам, спасибо за любую помощь.


ОБНОВИТЬ Я использовал следующий код ниже, чтобы проверить наличие ошибки при обновлении кнопки:

console.info( 'scheduled: ' + scheduled + ' orderid: ' + $('#userId').val() );

когда кнопка обновляется и страница обновляется, что также завершает сеанс, я получаю следующую ошибку:

jquery-ui.js:1951 Uncaught TypeError: Cannot read property 'step' of undefined
    at String.<anonymous> (jquery-ui.js:1951)
    at each (jquery.slim.min.js:2)
    at Function.color.hook (jquery-ui.js:1913)
    at jquery-ui.js:1963
    at jquery-ui.js:2005
    at jquery-ui.js:14
    at jquery-ui.js:16

Я не смог найти HTML-элемент с идентификатором «запланировано». Можете ли вы указать мне, где это? И что касается вашей первой проблемы, находите ли вы какие-либо ошибки в своей консоли при проверке?

sabhari karthik 10.04.2019 10:01

запланированный используется для цели данных и переменной, и в моей консоли нет ошибок в моей первой проблеме. пользователь просто выходит из системы.

user7454355 10.04.2019 12:01

Нет. Когда вы говорите «#scheduled», это означает, что есть элемент HTML с идентификатором «scheduled». У вас есть такой элемент..??

sabhari karthik 10.04.2019 12:03

мой плохой, забыл вытащить это, этот код избыточен. обновил вопрос.

user7454355 11.04.2019 04:51

Можете ли вы добавить console.info('scheduled: ' + запланированный +' orderid: ' + $('#userId').val()) в конце функции 'document.click on data-role update()', нажмите на кнопке, чтобы отобразить модальное окно, а затем проверить, получаете ли вы желаемые значения для передачи в db?

sabhari karthik 11.04.2019 05:03

проверил ваш console.info и обновил вопрос.

user7454355 11.04.2019 05:41

Давайте продолжить обсуждение в чате.

sabhari karthik 11.04.2019 05:48

Вы должны разбить это на два отдельных вопроса. Ваши проблемы jquery и PHP не связаны и поэтому должны быть отдельными вопросами.

Jon P 11.04.2019 06:12

мое обновление php связано с моим ajax.

user7454355 11.04.2019 07:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
9
112
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из того, что вы перечислили, я думаю, что у вас может быть «session_destroy ()» где-то в ваших файлах php (хотя это может быть не здесь). Попробуйте прокомментировать это и посмотреть, завершится ли сеанс или нет. Надеюсь, это поможет вам :).

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