初步接触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. 【转】如何让DIV水平和垂直居中

    来源:http://blog.163.com/www.wxs_123/blog/static/82784664201321831746921/ 我们在设计页面的时候,经常要把DIV居中显示,而且是相对 ...

  2. 使自定义事件支持多绑定 js

    <script language="JavaScript" type="text/javascript"> <!-- //定义类class1 ...

  3. java连接SQLserver

    1.pom.xml添加: <dependency>            <groupId>com.hynnet</groupId>            < ...

  4. Android 隐藏Fragment

    1.隐藏Fragment FragmentManager fManager = getFragmentManager(); fManager.beginTransaction() .setCustom ...

  5. android 工程出现感叹号错误

    android 工程出现感叹号错误: 错误问题分析,曾经导入的jar已经不存在工程目录中,project从其他地方导入时.没有及时更新,比如说svn下载到.project的文件,或者是path的文件. ...

  6. 【spring】non-compatible bean definition of same name and class

    org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected excep tion parsing XML do ...

  7. javassist AOP

    对于AOP,这个概念,不用解释,主要用途很多,我这里主要是为了后续研究如何实现APM做准备.前面研究了动态代理实现AOP,考虑到性能的问题,改用javassist直接修改直接码实现! javassis ...

  8. Javascript跨域问题解决方案

    ---本方法来自网上,因最近项目需求,解决了三天未果,最终发现此文并测试可用. 一个 非常优雅绝妙的解决方案!话不多说,直接上解决方案原理图: 该图要解决的问题说明如下:在AAA.com域名下的ind ...

  9. 剑指offer系列30-----删除链表中重复的节点

    [题目]在一个排序的链表中,存在重复的结点, * 请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. * 例如,链表1->2->3->3->4->4->5 ...

  10. SVN 分支及合并的介绍和实践---命令行

    写在前面 一些相关的概念和原理 进行分支开发的最佳实践 合并的分类 在 Eclipse 中进行合并操作 相关资源 写在前面 本文是由演讲整理而来的,介绍了 SVN 分支与合并的概念.流程和一些实际操作 ...