ThinkPHP3.2.3中典型的ajax获取json数据方法
2015-11-01 12:03
706 查看
AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。对于ajax的异步或同步参数设置(async),js库默认都设置为ture,即异步。当使用async=false 时,JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
php ajaxReturn返回的数据说明
当返回的数据是一个关联数组时,如果设置了ajax的数据格式为json,则会自动将数组转为json格式,其实在用ajaxReturn这个函数的时候也已经将数组转为jason格式了。测试如下:
对于上面的代码,用dump()函数打印出来,可知是一个一维的关联数组:
ajaxReturn($array)返回这个数组时,已经将数组转为json格式了:
此时axaj接收数据设置数据格式为json即可,通过data.cash等就可以获取cash数据。接收时就会将数据转化为json格式,因此不需要再用json_encode($array)这个函数来转化为json格式了。
如果是多维关联数组呢?
其实都是一样的,区别就是数据引用,多了个下标。
未json编码之前的dump函数打印:
同样的其实不需要用json_encode来编码,当加上也没影响,在ajaxReturn的时候就已经将多维关联数组转化为了json格式。则在接收数据处理时按多维数组来调用就行了:
Js(注意是放在html中,如不是,则ajax的url不能使用框架常量参数_CONTROLLER__)
<!-- 注意:jquery库一定要包含 --> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <script> $(document).ready(function(){ $.ajax({ url: '__CONTROLLER__/getAllOpetatorJsonInfo/', type: 'POST', dataType: 'json', success: function(data){ for(var i=0; i < data.length; i++) { alert(data[i].user_code+" " + data[i].name) } }, error: function(){ alert("获取操作员信息失败"); } }); }); </script>
控制器
/*获取收银员所在店的所有操作员json信息*/ public function getAllOpetatorJsonInfo(){ $login_user_name = cookie('login_user_name'); $sql = "select shop_code from t_user where login_name = '%s';"; $shop_code = M()->query($sql,$login_user_name); $sql = "select t_user.user_code,t_user.name from t_user,t_role_user where t_user.login_name = t_role_user.login_name and t_user.shop_code='%s' and t_role_user.role_name='操作员';"; $data = M()->query($sql,$shop_code[0]['shop_code']); if ($data) { //$returnData = json_encode($data); $this->ajaxReturn($returnData); } else { $data = ""; $this->ajaxReturn($returnData); } }
php ajaxReturn返回的数据说明
当返回的数据是一个关联数组时,如果设置了ajax的数据格式为json,则会自动将数组转为json格式,其实在用ajaxReturn这个函数的时候也已经将数组转为jason格式了。测试如下:
对于上面的代码,用dump()函数打印出来,可知是一个一维的关联数组:
array(size=5) 'cash' =>string'12.50'(length=5) 'vip' =>null 'account' =>string'1.20'(length=4) 'total_money' =>float13.7 'count' =>string'7'(length=1)
ajaxReturn($array)返回这个数组时,已经将数组转为json格式了:
{"cash":"12.50","vip":null,"account":"1.20","total_money":13.7,"count":"7"}
此时axaj接收数据设置数据格式为json即可,通过data.cash等就可以获取cash数据。接收时就会将数据转化为json格式,因此不需要再用json_encode($array)这个函数来转化为json格式了。
如果是多维关联数组呢?
其实都是一样的,区别就是数据引用,多了个下标。
未json编码之前的dump函数打印:
array(size=3) 0 =>array(size=3) 'user_code' =>string'001'(length=3) 'name' =>string'张三'(length=6) 'login_name' =>string'zhangsan'(length=8) 1 =>array(size=3) 'user_code' =>string'002'(length=3) 'name' =>string'李四'(length=6) 'login_name' =>string'lisi'(length=4) 2 =>array(size=3) 'user_code' =>string'003'(length=3) 'name' =>string'王五'(length=6) 'login_name' =>string'wangwu'(length=6)
未用json_encode()编码之前:
[{"user_code":"001","name":"\u5f20\u4e09","login_name":"zhangsan"},{"user_code":"002","name":"\u674e\u56db","login_name":"lisi"},{"user_code":"003","name":"\u738b\u4e94","login_name":"wangwu"}]
用json_encode()编码之后:
"[{\"user_code\":\"001\",\"name\":\"\\u5f20\\u4e09\",\"login_name\":\"zhangsan\"},{\"user_code\":\"002\",\"name\":\"\\u674e\\u56db\",\"login_name\":\"lisi\"},{\"user_code\":\"003\",\"name\":\"\\u738b\\u4e94\",\"login_name\":\"wangwu\"}]"
同样的其实不需要用json_encode来编码,当加上也没影响,在ajaxReturn的时候就已经将多维关联数组转化为了json格式。则在接收数据处理时按多维数组来调用就行了:
//动态的显示操作员的login_name $.ajax({ url: localhostPaht + '/Home/Cashier/getAllOpetatorJsonInfo/', type: 'POST', dataType: 'json', async : false, success: function(data){ for(var i = data.length - 1; i >= 0; i--) { if(i == operator) document.getElementById("operator_select").innerHTML = data[i].login_name; } }, error: function(){ alert("获取操作员信息失败"); } });
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- XML 与 JSON 优劣对比
- Php Installing An Expansion
- 解决Ajax悬停效果,无法遮蔽FLASH的问题
- VBA将excel数据表生成JSON文件
- 再谈Jquery Ajax方法传递到action(补充)
- Dom在ajax技术中的作用说明
- newtonsoft.json解析天气数据出错解决方法
- PHP+Apache在Windows 9x下的安装和配置
- 使用Ajax实时检测"用户名、邮箱等"是否已经存在
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充