Ajax OpenCart在删除订单后抛出无效的令牌会话

Ajax OpenCart在删除订单后抛出无效的令牌会话,ajax,opencart,Ajax,Opencart,我在OpenCart 2.1.0.2中编写了一个定制的Ajax调用和函数来删除丢失的订单。尽管该函数正常工作,订单被删除,但从控制器返回后,OpenCart会将我注销,并给我一个无效令牌会话错误,即使传递的令牌是正确的 下面是我对order\u list.tpl模板的ajax调用: $('#button-delete_missing').on('click', function(e) { if (confirm('<?php echo $text_confirm; ?>')) {

我在OpenCart 2.1.0.2中编写了一个定制的Ajax调用和函数来删除丢失的订单。尽管该函数正常工作,订单被删除,但从控制器返回后,OpenCart会将我注销,并给我一个
无效令牌会话
错误,即使传递的令牌是正确的

下面是我对
order\u list.tpl
模板的ajax调用:

$('#button-delete_missing').on('click', function(e) {
  if (confirm('<?php echo $text_confirm; ?>')) {
    var node = this;
    $.ajax({
      url: '<?php echo $store; ?>index.php?route=api/order/deleteMissing&token=<?php echo $_GET["token"] ?>',
      dataType: 'json',
      crossDomain: true,
      beforeSend: function () {
        $(node).button('loading');
      },
      complete: function () {
        $(node).button('reset');
      },
      success: function (json) {
        $('.alert').remove();

        if (json['error']) {
          $('#content > .container-fluid').prepend('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
        }

        if (json['success']) {
          $('#content > .container-fluid').prepend('<div class="alert alert-success"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
        }
      },
      error: function (xhr, ajaxOptions, thrownError) {
        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
      }
    });
  }
});
这与delete函数相同,只是不需要特定的订单id。以下是模型中实际执行删除的函数:

public function deleteMissingOrders() {

  $query = $this->db->query("SELECT order_id FROM " . DB_PREFIX . "order WHERE order_status_id = 0 OR order_status_id = null");
  $rows = $query->rows;
  $order_ids = array();

  foreach($rows as $row) {
    $order_ids[] = $row['order_id'];
  }

  if(!empty($order_ids)) {
    foreach($order_ids as $order_id) {
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'");
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order_product` WHERE order_id = '" . (int)$order_id . "'");
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order_option` WHERE order_id = '" . (int)$order_id . "'");
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order_voucher` WHERE order_id = '" . (int)$order_id . "'");
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order_total` WHERE order_id = '" . (int)$order_id . "'");
    }
  }
}
该函数获取所有空或零ID订单状态,并删除所有相关数据-这是可行的。我试过了,所有丢失的订单都被删除了;只是当它返回时会抛出一个非描述错误(即不运行ajax调用的成功部分),并将我从管理区域注销


如果有人能帮上忙,我将不胜感激。也许有一件事我错过了,或者我没有放进需要的东西?

我读对了,你的脚本似乎不知道什么是令牌。有申报单吗?因为Jquery不知道PHP知道什么

做点像


var标记=
尝试使用
$this->session->data['token']
而不是
$\u GET[“token”]
我会尝试一下,但是token在那里,它不像是丢失了一样。我已经决定把它放在cron上了,所以这并不重要。
public function deleteMissingOrders() {

  $query = $this->db->query("SELECT order_id FROM " . DB_PREFIX . "order WHERE order_status_id = 0 OR order_status_id = null");
  $rows = $query->rows;
  $order_ids = array();

  foreach($rows as $row) {
    $order_ids[] = $row['order_id'];
  }

  if(!empty($order_ids)) {
    foreach($order_ids as $order_id) {
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'");
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order_product` WHERE order_id = '" . (int)$order_id . "'");
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order_option` WHERE order_id = '" . (int)$order_id . "'");
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order_voucher` WHERE order_id = '" . (int)$order_id . "'");
      $this->db->query("DELETE FROM `" . DB_PREFIX . "order_total` WHERE order_id = '" . (int)$order_id . "'");
    }
  }
}