接口规范,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;
复制代码

这里的success表示成功,失败。

error_code表示提示信息。

datalist可以返回结果集。

这还是很规范的,以后可以使用这三个参数作为接口返回。

php端对数据,进行json_encode()处理。

js端会数据进行JSON.parse()处理。

前后就同一了。



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/4977066.html,如需转载请自行联系原作者


相关文章
|
26天前
|
JSON 前端开发 API
使用微信JS-SDK调用发票接口的完整开发指南
本文介绍了如何使用微信JS-SDK的`chooseInvoiceTitle`接口来调用微信的发票功能。通过微信发票接口,用户可以选择开具个人或单位发票,并获取相关发票信息,如抬头、税号、公司地址等。在文中,详细描述了JS-SDK的初始化、发票接口的调用方式,并提供了完整的代码示例。文章还介绍了如何处理返回的发票信息,帮助开发者快速集成微信发票功能。
69 2
|
3月前
|
JavaScript 数据安全/隐私保护 Python
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
148 4
|
3月前
|
JavaScript 前端开发 安全
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
75 0
|
4月前
|
前端开发 JavaScript
js 等待接口访问成功后执行指定代码【3种方法】(含async await Promise的使用)
js 等待接口访问成功后执行指定代码【3种方法】(含async await Promise的使用)
198 1
|
4月前
|
前端开发 JavaScript Linux
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
|
4月前
|
JavaScript
文本,Pinia的使用,(0 , _stores_token_js__WEBPACK_IMPORTED_MODULE_1__.useTokenStore),接口中必须用引入store.js文件
文本,Pinia的使用,(0 , _stores_token_js__WEBPACK_IMPORTED_MODULE_1__.useTokenStore),接口中必须用引入store.js文件
|
5月前
|
JavaScript 前端开发 API
详解JS的URL()和URLSearchParams() API接口
详解JS的URL()和URLSearchParams() API接口
110 2
|
4月前
|
JavaScript 算法 中间件
JS案例:接口加解密与防重放
JS案例:接口加解密与防重放
28 0
|
4月前
|
移动开发 JavaScript
thinkPHP5.0开发微信H5页面分享接口signature验证失败,signature与微信 JS 接口签名校验工具返回结果不一致
thinkPHP5.0开发微信H5页面分享接口signature验证失败,signature与微信 JS 接口签名校验工具返回结果不一致
84 0
|
5月前
|
JavaScript 前端开发 Java
信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ&插件项目
信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ&插件项目