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

是不是很简单呢!这样就不需要担心跨域问题了!!
http://www.cnblogs.com/luoxiaomo/p/5780613.html
Wex5案例使用JSON传输Thinkphp后端对接,以达成数据正常输出的更多相关文章
- SSM框架用JSON进行前后端数据传输
一个根据用户id查找用户信息的简单功能,使用JSON进行数据的传输 前端代码 这里用bootstrap做简单的样式美化,中间留了个div用来异步的显示查询结果,ajax进行前端的数据传输(class内 ...
- java http post/get 服务端和客户端实现json传输
注:本文来源于<java http post/get 服务端和客户端实现json传输> 最近需要写http post接口所以学习下. 总的还是不难直接上源码! PostHttpClient ...
- 关于web前端base64转换为Blob,存入数组后 ajax请求传输到后端 接受不到文件问题
前端console输出是正常Blob对象,通过ajax formdata 传输到 后端java SpringMvc用MultipartFile接受却一直接受不到,后来直接解析HttpServletRe ...
- json传输二进制的方案【转】
本文转自:http://wiyi.org/binary-to-string.html json 是一种很简洁的协议,但可惜的是,它只能传递基本的数型(int,long,string等),但不能传递by ...
- AJAX如何传递json对象给后端
如果页面上一直报错,根本没有触发异步请求的话,首先就要检查接口或者路径是否写对或者写全,在去考虑是否跨境的问题. 如果想要给后端传递一个json对象,需要在路径上一句添加content:applica ...
- php中json对象数据的输出转化
php中json对象数据的输出转化 public function get_my_now_citys(){ $datas=$this->_post('datas'); //前台js脚本传递给后端 ...
- vue-resource传参数到后端,后端取不到数据的问题
先上一段代码: this.$http.post('xxx',{Search_Text:this.search_text}).then(function(response){ // 响应成功回调 thi ...
- 使用Json.NET来序列化所需的数据
我们在做开发的时候,很多时候需要和Json数据格式打交道,如Web开发里面,很多时候,数据通过Json进行传递到页面上,然后在进行处理的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用 ...
- 远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像
远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像: 一 : 首先要了解bmp图像的结构 详情请看我转载的一篇文章http://blog.csdn.net/hnust_x ...
随机推荐
- libc-glibc
glibc 和 libc 都是 Linux 下的 C 函数库. libc 是 Linux 下的 ANSI C 函数库:glibc 是 Linux 下的 GUN C 函数库. ANSI C 和 GNU ...
- shell之here文档
http://www.cnblogs.com/xiangzi888/archive/2012/03/24/2415077.html在shell脚本程序中,向一条命令传递输入的一种特殊方法是使用here ...
- unity, 查看.anim中的动画曲线(和帧)
在场景里建一个gameObject,添加一个Animation组件,将.anim文件添加到Animation组件的Animations中,然后在Animation组件面板中选中.anim,然后 菜单- ...
- OpenJudge计算概论-字符串排序
/*====================================================================== 字符串排序 总时间限制: 1000ms 内存限制: 6 ...
- PHP stdClass Object转array
用json传过来的数组并不是标准的array,所以需要用这个函数进行转换. function object_array($array){ if(is_object($array)) { ...
- Android中Service的使用详解和注意点(LocalService)
Android中Service的使用详解和注意点(LocalService) 原文地址 开始,先稍稍讲一点android中Service的概念和用途吧~ Service分为本地服务(LocalServ ...
- WCF学习心得------(三)配置服务
配置服务 配置服务概述 在设计和实现服务协定后,便可以进行服务的配置.在其中可以定义和自定义如何向客户段公开服务,包括指定可以找到服务的地址,服务用于发送和接受消息的传输和消息编码,以及服务需要的安全 ...
- 【linux】grub详解
参数解释 1. default=0 # default后加一个数字n,表示n+1个“title”操作系统,0表示第一个“title” 的操作系统,以此类推. 2. timeout=0 # timeou ...
- 51nod1313 完美串
一个N长的字符串S(N<=3000),只由'R','G','B'三种字符组成,即串中不存在除了这3个字符以外的其他字符.字符串S的子串substr(L,R)指S[L]S[L+1]S[L+2].. ...
- 为什么要用VisualSVN Server,而不用Subversion?
为什么要用VisualSVN Server,而不用Subversion? [SVN 服务器的选择] - 摘自网络 http://www.cnblogs.com/haoliansheng/archive ...