Ajax OpenCart在删除订单后抛出无效的令牌会话
我在OpenCart 2.1.0.2中编写了一个定制的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; ?>')) {
无效令牌会话
错误,即使传递的令牌是正确的
下面是我对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">×</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">×</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 . "'");
}
}
}