Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencart成功从JavaScript获得订单ID和总计_Javascript_Php_Opencart - Fatal编程技术网

Opencart成功从JavaScript获得订单ID和总计

Opencart成功从JavaScript获得订单ID和总计,javascript,php,opencart,Javascript,Php,Opencart,我需要在成功订单的页面上运行JavaScript,并获得两个结果:订单ID和订单总额。代码如下所示: //这里有一些代码 arr.push([ “创建订单”, {订单号:“*订单号*”,和:*和*} ]); 问题 我应该将脚本粘贴到哪里?如果进入成功。第三方物流究竟在哪里?如果进入header.tpl,那么如何仅在订单成功页面上运行它 我应该使用哪些变量?我已经试过了,但不起作用: {order\u id:,sum:} 另一方面,Opencart版本是1.5.6这里的问题是,在成功页面上,

我需要在成功订单的页面上运行JavaScript,并获得两个结果:订单ID和订单总额。代码如下所示:


//这里有一些代码
arr.push([
“创建订单”,
{订单号:“*订单号*”,和:*和*}
]);
问题

  • 我应该将脚本粘贴到哪里?如果进入成功。第三方物流究竟在哪里?如果进入header.tpl,那么如何仅在订单成功页面上运行它
  • 我应该使用哪些变量?我已经试过了,但不起作用:
  • {order\u id:,sum:}
    

    另一方面,Opencart版本是1.5.6

    这里的问题是,在成功页面上,所有订单数据都已经从会话变量中取消设置(删除)。这就是您的代码无法成功的原因

    查看
    catalog/controller/checkout/success.php
    并将
    index()
    函数的开头更改为:

    public function index() {
        $this->data['order_id'] = 0; // <-- NEW LINE
        $this->data['total'] = 0; // <-- NEW LINE
    
        if (isset($this->session->data['order_id'])) {
            $this->data['order_id'] = $this->session->data['order_id']; // <-- NEW LINE
            $this->data['total'] = $this->cart->getTotal(); // <-- NEW LINE
    
            $this->cart->clear();
    
            unset($this->session->data['shipping_method']);
            unset($this->session->data['shipping_methods']);
            unset($this->session->data['payment_method']);
            unset($this->session->data['payment_methods']);
            unset($this->session->data['guest']);
            unset($this->session->data['comment']);
            unset($this->session->data['order_id']);    
            unset($this->session->data['coupon']);
            unset($this->session->data['reward']);
            unset($this->session->data['voucher']);
            unset($this->session->data['vouchers']);
        }   
    
        $this->language->load('checkout/success');
    

    这应该足够了。

    这里的问题是,在成功页面上,所有订单数据都已经从会话变量中取消设置(删除)。这就是您的代码无法成功的原因

    查看
    catalog/controller/checkout/success.php
    并将
    index()
    函数的开头更改为:

    public function index() {
        $this->data['order_id'] = 0; // <-- NEW LINE
        $this->data['total'] = 0; // <-- NEW LINE
    
        if (isset($this->session->data['order_id'])) {
            $this->data['order_id'] = $this->session->data['order_id']; // <-- NEW LINE
            $this->data['total'] = $this->cart->getTotal(); // <-- NEW LINE
    
            $this->cart->clear();
    
            unset($this->session->data['shipping_method']);
            unset($this->session->data['shipping_methods']);
            unset($this->session->data['payment_method']);
            unset($this->session->data['payment_methods']);
            unset($this->session->data['guest']);
            unset($this->session->data['comment']);
            unset($this->session->data['order_id']);    
            unset($this->session->data['coupon']);
            unset($this->session->data['reward']);
            unset($this->session->data['voucher']);
            unset($this->session->data['vouchers']);
        }   
    
        $this->language->load('checkout/success');
    

    这应该足够了。

    前面的答案需要更新,以适应更高版本的Opencart 对于
    2.2.0

    $data['order_id'] = 0;
    $data['total'] = 0;
    
    and
    $data['order_id'] = $this->session->data['order_id'];
    $data['total'] = $this->cart->getTotal();
    

    以前的答案需要更新,以用于Opencart的更高版本,而不是前面指出的新行 对于
    2.2.0

    $data['order_id'] = 0;
    $data['total'] = 0;
    
    and
    $data['order_id'] = $this->session->data['order_id'];
    $data['total'] = $this->cart->getTotal();
    
    而不是前面指出的新行