Wex5案例使用JSON傳輸Thinkphp后端對接,以達成數據正常輸出


初步接觸Wex5,操作起來還是覺得比較復雜!而且教程不多,讓我着實比較煩躁!
因此自己動手豐衣足食!還是比較實在的!


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


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

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

02. /*

03. * 1、加載商品數據

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表與此對應!當然在正式項目中你得使用自己的字段對接!

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. * 1、加載商品數據

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.}

 


好了教程到此結束!如果你不是直接輸出數組的話,那么你可能需要用到以下代碼:

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.}

是不是很簡單呢!這樣就不需要擔心跨域問題了!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM