php3.2.3 ajax,ThinkPHP3.2.3中典型的ajax获取json数据方法

AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。对于ajax的异步或同步参数设置(async),js库默认都设置为ture,即异步。当使用async=false 时,JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

Js(注意是放在html中,如不是,则ajax的url不能使用框架常量参数_CONTROLLER__)

控制器

/*获取收银员所在店的所有操作员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("获取操作员信息失败");

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值