[分享]Wex5案例使用JSON傳輸Thinkphp後端對接,以達成數據正常輸出

初步接觸Wex5,操做起來仍是以爲比較複雜!並且教程很少,讓我着實比較煩躁!
所以本身動手豐衣足食!仍是比較實在的!php


採用版本:WeX5應用快速開發框架V3.5正式版html


咱們使用Wex5的仿淘寶APP案例進行初步的數據對接!
打開Wex5項目,U12/demo/taobao/main.js找到如下代碼:thinkphp

01.Model.prototype.goodsDataCustomRefresh = function(event) {

02.                /*

03.                 * 一、加載商品數據

04.                 */

05.                var url = require.toUrl("./main/json/goodsData.json");

06.                allData.loadDataFromFile(url, event.source, true);

07.        };


這裏調用的本地的固定.json輸出!而咱們作的app數據怎麼多是固定的呢?而大多數項目都是和PC&WAP連在一塊的!所以爲了多端統一的數據!咱們就必須統一使用一個數據庫做爲存儲!而又不想寫太多代碼!能夠直接調用Thinkphp的JS輸出!爲了和案例保持一致!那麼你須要對輸出作些變更!數據庫


咱們首先在Thinkphp的項目裏新建一個API文件!初步命名爲ApitpAction.class.php做爲對接APP的接口的文件!
根據上述goodsData.json文件,咱們獲得相應的數據庫字段!爲了簡單的演示!所以咱們在數據庫中的goods表與此對應!固然在正式項目中你得使用本身的字段對接!json

01.        public function goods() {

02.                $result=M('goods')->where($where)->order("id desc")->select();

03.                output_data($result); //直接輸出數組

04.        }


那麼咱們的這個接口文件就是http://127.0.0.1/Apitp/goods;而後把如下代碼替換第一步的JS中!跨域

01.Model.prototype.goodsDataCustomRefresh = function(event) {

02.                /*

03.                 * 一、加載商品數據

04.                 */

05.                var url = require.toUrl("<span style="background-color: rgb(255, 255, 255);">http://127.0.0.1/Apitp/goods</span>");

06.                allData.loadDataFromFile(url, event.source, true);

07.        };


這樣咱們能夠看到輸出結果正常輸出中哦!其它對接以此觸類旁通便可!
到了這裏最關鍵的一步到了!爲何我要使用output_data來作爲輸出JSON?下面咱們要針對這個作一個特別的處理!就是跨域輸出處理!
所以咱們在thinkphp項目下的common.php裏對output_data進行處理!將如下代碼複製至common.php便可:數組

01.function output_data($datas, $extend_data = array(), $error = false) {

02.

03.

04.    $data = $datas;

05.

06.    $jsonFlag = 0 && C('debug') && version_compare(PHP_VERSION, '5.4.0') >= 0

07.        ? JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE

08.        : 0;

09.

10.    if ($jsonFlag) {

11.        header('Content-type: text/plain; charset=utf-8');

12.    }

13.

14.    if (!empty($_GET['callback'])) {

15.        echo $_GET['callback'].'('.json_encode($data, $jsonFlag).')';die;

16.    } else {

17.        header("Access-Control-Allow-Origin:*");

18.        echo json_encode($data, $jsonFlag);die;

19.    }

20.}


好了教程到此結束!若是你不是直接輸出數組的話,那麼你可能須要用到如下代碼:app

01.function output_data($datas, $extend_data = array(), $error = false) {

02.    $data = array();

03.    if(!empty($extend_data)) {

04.        $data = array_merge($data, $extend_data);

05.    }

06.

07.    $data['datas'] = $datas;

08.

09.    $jsonFlag = 0 && C('debug') && version_compare(PHP_VERSION, '5.4.0') >= 0

10.        ? JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE

11.        : 0;

12.

13.    if ($jsonFlag) {

14.        header('Content-type: text/plain; charset=utf-8');

15.    }

16.

17.    if (!empty($_GET['callback'])) {

18.        echo $_GET['callback'].'('.json_encode($data, $jsonFlag).')';die;

19.    } else {

20.        header("Access-Control-Allow-Origin:*");

21.        echo json_encode($data, $jsonFlag);die;

22.    }

23.}


是否是很簡單呢!這樣就不須要擔憂跨域問題了!!
 框架

相關文章
相關標籤/搜索