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.}
复制代码
是不是很简单呢!这样就不需要担心跨域问题了!!
原文地址:https://www.cnblogs.com/homehtml/p/12933418.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于Hive使用的一些实例
- 134. 加油站 Krains 2020-08-20 14:03:21 前缀和贪心
- 53. 最大子序和 Krains 2020-08-20 10:46:24 动态规划前缀和
- 如何用Unity导出H5与小游戏的3D场景
- 设计模式 之 模板模式
- java基础:注解的定义与使用
- 使用 vagrant 从搭建 gitlab server 开始体验整个 gitlab CI/CD 过程
- 纲手推荐程序笔记1-p5.js创意游戏编程
- 由浅入深彻底了解 Python 闭包和装饰器
- leetcode1078 Occurrences After Bigram
- 负二进制加法实现
- 如何在O(1)时间复杂度下实现LRU
- 字符串拼接的N种方式
- MySQL 解决查询NULL的问题
- 矩阵旋转的解决