Wex5案例使用JSON传输Thinkphp后端对接,以达成数据正常输出-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Wex5案例使用JSON传输Thinkphp后端对接,以达成数据正常输出

2016-08-17 16:48:35 4706 3

初步接触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.}





是不是很简单呢!这样就不需要担心跨域问题了!!

取消 提交回答
全部回答(3)
  • 宝商科技
    2016-08-31 05:32:44
    您的帖子很精彩!希望很快能再分享您的下一帖!
    0 0
  • 元芳啊
    2016-08-19 22:33:19
    你懂的!
    0 0
  • 聚小编
    2016-08-18 10:12:34
    好文赞,帮推荐到首页
    0 0
添加回答
相关问答

20

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 1215504浏览量 回答数 20

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 231981浏览量 回答数 170

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 159347浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 340327浏览量 回答数 8

118

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 300751浏览量 回答数 118

39

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 262764浏览量 回答数 39

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 193496浏览量 回答数 21

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 309177浏览量 回答数 251

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 482949浏览量 回答数 24

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 205363浏览量 回答数 2
5
文章
12
问答
问答排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载