如何在json变量中存储输出并成功绘制它?

时间:2015-05-13 13:39:11

标签: php json opencart

我正在使用Opencart 2.0.2.0。在此之前我使用的是Opencart 1.5.6.4。我的代码如下,

       if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/onepagecheckout/address.tpl')) {
            $this->template = $this->config->get('config_template') . '/template/onepagecheckout/address.tpl';
        } else {
            $this->template = 'default/template/onepagecheckout/address.tpl';
        }

        $json['hasshipping'] = $this->cart->hasShipping();  
        $json['output'] = $this->render();
        $this->response->setOutput($this->model_onepagecheckout_checkout->jsonencode($json));

这很好用。我在结帐页面上得到它,然后我通过json['output']呈现HTML。但在Opencart 2.0.2.0我不能这样做。

  

我的代码如下

      $json['hasshipping'] = $this->cart->hasShipping();    

      $json['output'] = $this->response->setOutput($this->load->view('default/template/onepagecheckout/address.tpl', $data));

}
      $this->response->addHeader('Content-Type: application/json');
      $this->response->setOutput($this->model_onepagecheckout_checkout->jsonencode($json));

我在控制台中将其作为HTML获取。我还在我的ajax代码中检查了dataTypeJSON。我该如何解决呢。谢谢!

修改

  

以下是1.5.6.4版本的响应快照

enter image description here

  

以下是版本2.0.2.0的响应图像

enter image description here

1 个答案:

答案 0 :(得分:0)

只需要在将视图加载到json结果时删除$ this-> response-> setOutput。
所以代码看起来像这样:

$json['hasshipping'] = $this->cart->hasShipping();
$json['output'] = $this->load->view('default/template/onepagecheckout/address.tpl', $data);

$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));