Ajax更新问题(SQL和扩展)

问题描述 投票:-2回答:1

我有一个具有一些特定问题的ajax更新功能,我确信这只需要一些调整才能100%完成。

我会尽可能清楚地总结下面的问题。

我有两个互相交互的文件:

  • orders.php
  • 订单claimed.vc.php

我的ajax试图根据点击的按钮更新表的int值。 NO = 0,YES = 1,CANCELED = 2。

orders.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)

  • 表列UI

1

  • 资本

modal

  • SQL表名“订单”2

这些是我在页面中的扩展。大多数存储在文件夹中并且正在链接。

   <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下不起作用并得到“非函数错误”,因此我将其更改为来自https://code.jquery.com/jquery-3.3.1.js的常规版本的jquery

问题

如果我切换到完整版本的jquery,列会更新,但会话(登录用户)会自动结束并注销。为什么会这样?


我的第二个问题是orders-claims.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;
  }

}

?>

orders.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.log( '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
javascript php jquery sql ajax
1个回答
1
投票

根据你列出的内容,我认为你的php文件中可能有“session_destroy()”(尽管它可能不会在这里放置)。尝试对其进行评论,看看会话是否结束。希望它可以帮助你:)。

© www.soinside.com 2019 - 2024. All rights reserved.