接口规范,js处理json,php返回给ajax的数据格式
ajax异步获取php数据。
一般php会在后台处理请求,并返回结果给前端。
必须是echo的方式,不然ajax获取不到。
返回的类型包括,字符串,数字,json。
最常用的就是json。
返回后,前端会处理json成对象,然后使用。
案例如下:
ajax
- // 获取good_id,store_id,user_id
- var good_id = '{sh:$goods.id}';
- var store_id = '{sh:$goods.store_id}';
- var user_id = '{sh:$user_id}';
- //alert('{sh:$token}');
- // ajax 加入收藏
- $.ajax({
- type: "post",
- url: "{sh::U('User/ajax',array('token'=>$token,'id'=>$goods['id']))}",
- data: "do=addcollect&good_id=" + good_id + "&store_id=" + store_id + "&user_id=" + user_id,
- success: function(data) {
- var data = JSON.parse(data); // 解析成json对象
- if (data.success == 1) {
- return floatNotify.simple(data.error_code);
- } else {
- return floatNotify.simple(data.error_code);
- }
- }
- });
复制代码
php端接受到数据,处理,并返回结果(接口)
复制代码
- // 定义接口返回值
- $success = '';
- $error_code = '';
- $datalist = array();
- $do = trim($_REQUEST['do']);
- switch ($do) {
- case 'addcollect':
- $good_id = trim($_REQUEST['good_id']);
- $store_id = trim($_REQUEST['store_id']);
- $user_id = trim($_REQUEST['user_id']);
- // 查询是否已存在,不要重复添加
- $model = M('WxuserCollection');
- $data = $model - >create();
- $count = $model - >where(array('user_id' = >$user_id, 'good_id' = >$good_id, 'store_id' = >$store_id)) - >getField('count(*)');
- if ($count > 0) {
- // 已收藏,请勿重复添加
- $success = '2';
- $error_code = '已收藏';
- } else {
- $data['addtime'] = time();
- $res = $model - >data($data) - >add(); // 返回值为自增id
- if ($res) {
- // 收藏成功
- $success = '1';
- $error_code = '收藏成功';
- } else {
- // 收藏失败
- $success = '0';
- $error_code = '收藏失败';
- }
- }
- // 返回json数据,或者字符串,数字。
- $json = array('success' = >$success, 'error_code' = >$error_code, 'datalist' = >$datalist);
- echo json_encode($json);
- //break;可以没有,根据情况调整
- break;
复制代码
这里的success表示成功,失败。
error_code表示提示信息。
datalist可以返回结果集。
这还是很规范的,以后可以使用这三个参数作为接口返回。
php端对数据,进行json_encode()处理。
js端会数据进行JSON.parse()处理。
前后就同一了。 |