起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4331|回复: 6

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

  [复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
QQ
发表于 2016-8-11 17:05:26 | 显示全部楼层 |阅读模式
初步接触Wex5,操作起来还是觉得比较复杂!而且教程不多,让我着实比较烦躁!
因此自己动手丰衣足食!还是比较实在的!


采用版本:WeX5应用快速开发框架V3.5正式版


我们使用Wex5的仿淘宝APP案例进行初步的数据对接!
打开Wex5项目,U12/demo/taobao/main.js找到以下代码:
  1. Model.prototype.goodsDataCustomRefresh = function(event) {
  2.                 /*
  3.                  * 1、加载商品数据
  4.                  */
  5.                 var url = require.toUrl("./main/json/goodsData.json");
  6.                 allData.loadDataFromFile(url, event.source, true);
  7.         };
复制代码
这里调用的本地的固定.json输出!而我们做的app数据怎么可能是固定的呢?而大多数项目都是和PC&WAP连在一块的!因此为了多端统一的数据!我们就必须统一使用一个数据库作为存储!而又不想写太多代码!可以直接调用Thinkphp的JS输出!为了和案例保持一致!那么你需要对输出做些变动!


我们首先在Thinkphp的项目里新建一个API文件!初步命名为ApitpAction.class.php作为对接APP的接口的文件!
根据上述goodsData.json文件,我们得到相应的数据库字段!为了简单的演示!因此我们在数据库中的goods表与此对应!当然在正式项目中你得使用自己的字段对接!
  1.         public function goods() {
  2.                 $result=M('goods')->where($where)->order("id desc")->select();
  3.                 output_data($result); //直接输出数组
  4.         }
复制代码
那么我们的这个接口文件就是http://127.0.0.1/Apitp/goods;然后把以下代码替换第一步的JS中!
  1. Model.prototype.goodsDataCustomRefresh = function(event) {
  2.                 /*
  3.                  * 1、加载商品数据
  4.                  */
  5.                 var url = require.toUrl("<span style="background-color: rgb(255, 255, 255);">http://127.0.0.1/Apitp/goods</span>");
  6.                 allData.loadDataFromFile(url, event.source, true);
  7.         };
复制代码
这样我们可以看到输出结果正常输出中哦!其它对接以此举一反三即可!


到了这里最关键的一步到了!为什么我要使用output_data来做为输出JSON?下面我们要针对这个做一个特别的处理!就是跨域输出处理!
因此我们在thinkphp项目下的common.php里对output_data进行处理!将以下代码复制至common.php即可:
  1. function output_data($datas, $extend_data = array(), $error = false) {


  2.     $data = $datas;

  3.     $jsonFlag = 0 && C('debug') && version_compare(PHP_VERSION, '5.4.0') >= 0
  4.         ? JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
  5.         : 0;

  6.     if ($jsonFlag) {
  7.         header('Content-type: text/plain; charset=utf-8');
  8.     }

  9.     if (!empty($_GET['callback'])) {
  10.         echo $_GET['callback'].'('.json_encode($data, $jsonFlag).')';die;
  11.     } else {
  12.         header("Access-Control-Allow-Origin:*");
  13.         echo json_encode($data, $jsonFlag);die;
  14.     }
  15. }
复制代码

好了教程到此结束!如果你不是直接输出数组的话,那么你可能需要用到以下代码:

  1. function output_data($datas, $extend_data = array(), $error = false) {
  2.     $data = array();
  3.     if(!empty($extend_data)) {
  4.         $data = array_merge($data, $extend_data);
  5.     }

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

  7.     $jsonFlag = 0 && C('debug') && version_compare(PHP_VERSION, '5.4.0') >= 0
  8.         ? JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
  9.         : 0;

  10.     if ($jsonFlag) {
  11.         header('Content-type: text/plain; charset=utf-8');
  12.     }

  13.     if (!empty($_GET['callback'])) {
  14.         echo $_GET['callback'].'('.json_encode($data, $jsonFlag).')';die;
  15.     } else {
  16.         header("Access-Control-Allow-Origin:*");
  17.         echo json_encode($data, $jsonFlag);die;
  18.     }
  19. }
复制代码

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




8

主题

56

帖子

142

积分

初级会员

Rank: 2

积分
142
QQ
发表于 2016-8-16 09:42:22 | 显示全部楼层
那么好的文章怎么没人顶????我来支持一个~~~
回复 支持 反对

使用道具 举报

3

主题

19

帖子

53

积分

初级会员

Rank: 2

积分
53
QQ
发表于 2016-8-31 15:55:29 | 显示全部楼层
感谢分享。还不是很明白,做个记录,下次再看。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
QQ
发表于 2016-9-3 16:36:08 | 显示全部楼层
楼主:
那么我们的这个接口文件就是http://127.0.0.1/Apitp/goods;然后把以下代码替换第一步的JS中!
下边代码中的alldata指的是什么??
回复 支持 反对

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
QQ
发表于 2016-9-5 10:35:51 | 显示全部楼层
楼主,按你的方法试了?但是在浏览器上运行的时候  提示网络出错,不知道楼主遇到过这个问题没?
回复 支持 反对

使用道具 举报

94

主题

403

帖子

683

积分

高级会员

Rank: 4

积分
683
QQ
发表于 2016-9-11 11:00:46 | 显示全部楼层
这个思路可以
欢迎各位加群讨论:http://bbs.wex5.com/forum.php?mod=viewthread&tid=105046&page=1&extra=#pid165306780
回复 支持 反对

使用道具 举报

23

主题

139

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
QQ
发表于 2016-10-19 09:43:14 | 显示全部楼层
不错 顶一下。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-19 23:26 , Processed in 0.075787 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表