初步接触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后端对接,以达成数据正常输出的更多相关文章

  1. SSM框架用JSON进行前后端数据传输

    一个根据用户id查找用户信息的简单功能,使用JSON进行数据的传输 前端代码 这里用bootstrap做简单的样式美化,中间留了个div用来异步的显示查询结果,ajax进行前端的数据传输(class内 ...

  2. java http post/get 服务端和客户端实现json传输

    注:本文来源于<java http post/get 服务端和客户端实现json传输> 最近需要写http post接口所以学习下. 总的还是不难直接上源码! PostHttpClient ...

  3. 关于web前端base64转换为Blob,存入数组后 ajax请求传输到后端 接受不到文件问题

    前端console输出是正常Blob对象,通过ajax formdata 传输到 后端java SpringMvc用MultipartFile接受却一直接受不到,后来直接解析HttpServletRe ...

  4. json传输二进制的方案【转】

    本文转自:http://wiyi.org/binary-to-string.html json 是一种很简洁的协议,但可惜的是,它只能传递基本的数型(int,long,string等),但不能传递by ...

  5. AJAX如何传递json对象给后端

    如果页面上一直报错,根本没有触发异步请求的话,首先就要检查接口或者路径是否写对或者写全,在去考虑是否跨境的问题. 如果想要给后端传递一个json对象,需要在路径上一句添加content:applica ...

  6. php中json对象数据的输出转化

    php中json对象数据的输出转化 public function get_my_now_citys(){ $datas=$this->_post('datas'); //前台js脚本传递给后端 ...

  7. vue-resource传参数到后端,后端取不到数据的问题

    先上一段代码: this.$http.post('xxx',{Search_Text:this.search_text}).then(function(response){ // 响应成功回调 thi ...

  8. 使用Json.NET来序列化所需的数据

    我们在做开发的时候,很多时候需要和Json数据格式打交道,如Web开发里面,很多时候,数据通过Json进行传递到页面上,然后在进行处理的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用 ...

  9. 远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像

    远程控制编写之屏幕传输  MFC实现  屏幕截图 发送bmp数据 显示bmp图像: 一 : 首先要了解bmp图像的结构 详情请看我转载的一篇文章http://blog.csdn.net/hnust_x ...

随机推荐

  1. numpy下的flatten()函数用法

    flatten是numpy.ndarray.flatten的一个函数,其官方文档是这样描述的: ndarray.flatten(order='C') Return a copy of the arra ...

  2. 二十四种设计模式:责任链模式(Chain of Responsibility Pattern)

    责任链模式(Chain of Responsibility Pattern) 介绍为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求.将这些对象连成一条链,并沿着这条链传递该请求,直 ...

  3. MVC的异步,Entity Framework的异步,ADO.NET的异步,

    MVC的异步化改造 无比轻松,只要把ActionResult改为async Task<AstionResult>: public async Task<ActionResult> ...

  4. sqlserver模糊查询【转】

    http://blog.csdn.net/liuxinxin1125/article/details/5444873 SELECT * FROM user WHERE name LIKE ';%三%' ...

  5. java中的堆、栈、常量池以及String类型的两种声明

    参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...

  6. react-redux知识点

    1.定义组件: 2.定义action: 3.定义Reducer:reducer1(state,action): 4.定义store:store(reducer1): 5.定义mapStateToPro ...

  7. Python文件处理之文件写入方式与写缓存(三)

    Python的open的写入方式有: write(str):将str写入文件 writelines(sequence of strings):写多行到文件,参数为可迭代对象 首先来看下writelin ...

  8. ASP.NET Web API实践系列04,通过Route等特性设置路由

    ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...

  9. mysql的主从配置以及主主配置

    基础环境 系统:linuxmysql版本:5.5主服务器IP:192.168.1.101从服务器IP:192.168.1.102 1.主服务器(master)要打开二进制日志2.从服务器(slave) ...

  10. Python哈希函数hashlib

    hashlib常用加密方法:md5(), sha1(), sha224(), sha356(), sha384(), sha512()等 结果显示方法: digest():    返回二进制字符串 h ...