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 ...
随机推荐
- jquery得到iframe src属性值的方法
这篇文章主要介绍了jquery得到iframe src属性值的方法,很简单,很实用,需要的朋友可以参考下 取得iframe src属性的的值: Html代码 <!DOCTYPE HTML> ...
- unity shader在小米2s上的问题
一个很简单的用mask裁剪图片的效果: mask: 被裁剪图片: 正确的效果: 在小米2s上测,其中有一台小米2s出现花屏: 手机型号: shader如下: Shader "UI/Trans ...
- MvcPager2.0 中分页初始化失败的问题
页面初始化时只有一页数据,或没数据时,出现分页控件初始化失败以及后续Ajax分页功能失效的问题, <div class="pagin"> <div class=& ...
- struts2.0的工作原理
struts2并不是一个陌生的web框架,它是以Webwork的设计思想为核心,吸收struts1的优点,可以说 struts2是struts1和Webwork结合的产物. struts2 的工作原理 ...
- nginx禁止未绑定域名访问 并且强行断开连接
总有些人,会把自己的域名绑到你的主机上. 出于什么原因,我没想到,但你肯定不愿意别人这么做. 在nginx中,用以下代码,配置一个默认主机. server { listen 80 default_se ...
- 邮件发送工具类 SendMail.java
package com.util; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.Simp ...
- (四)文本编辑器Vim/Vi
目录 前言 常用命令 扩展应用 总结 本系列先前的随笔位于新浪博客 前言 Vi和Vim都是文本编辑器,不同的是Vim是Vi的升级版本,它不仅兼容Vi的所有指令,而且还有一些新的特性在里面. Vim/V ...
- javascript取得机器名,用户名,读写注册表,启动应用程序
javascript取得机器名,用户名,读写注册表,启动应用程序//javascript有个特殊的对象ActiveXObject,通过它可以访问windows的本地文件系统和应用程序,比如:有的时候我 ...
- phpcms日期时间
PHPCMS V9调用时间标签 |日期时间格式化 转载 2016-06-17 14:58:54 标签:php PHPCMS V9 如何调用时间标签,下面分享常见的调用时间标签 |日期时间格式化 1.日 ...
- C#限制程序只能运行一個实例 (防多开)
//方法一:只禁止多个进程运行 using System; using System.Collections.Generic; using System.Windows.Forms; namespac ...