栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > tpAdmin

数据返回 - tpAdmin 文档

tpAdmin 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据返回 - tpAdmin 文档


>[warning] 已废弃之前的直接将 json 格式数据 exit 出来,遵循官方推荐使用 thinkResponse::create() 方法进行数据返回

## json 数据返回
由于前端 ajax 请求回调的刷新、重定向、其他回调都是后台严格的 json 数据返回控制,请安装规范返回规定的 json 数据,框架已经给封装了四个常用 json 数据方法方法
###ajax_return
这个为标准规范格式的 json 数据返回,其他所有的 json 数据返回全部以这个为基础进行封装,如果需要添加其他参数,可以在 `$extend` 中自行扩展
```

function ajax_return($data = [], $msg = "", $code = 0, $extend = [])
{
$ret = ["code" => $code, "msg" => $msg, "data" => $data];
$ret = array_merge($ret, $extend);

return Response::create($ret, 'json');
}
```
###ajax_return_error
快速返回一条标准的包含错误信息的 json 数据
```

function ajax_return_error($msg = "出现错误", $code = 1, $data = [], $extend = [])
{
return ajax_return($data, $msg, $code, $extend);
}
```
###ajax_return_adv
框架中几乎所有的操作全部由此方法返回 json 数据,用于控制前端页面处理
```

function ajax_return_adv($msg = '操作成功', $redirect = 'parent', $alert = '', $close = false, $url = '', $data = '', $code = 0, $extend = [])
{
$extend['opt'] = [
'alert' => $alert,
'close' => $close,
'redirect' => $redirect,
'url' => $url,
];

return ajax_return($data, $msg, $code, $extend);
}
```
下面是其中参数的使用说明

| 参数名称 | 类型 | 使用说明 |
| --- | --- | --- |
| msg | string | 提示信息,`code` 为 0 时信息使用 `layer.msg` 显示,3 秒自动消失,`code` 不为 0 时使用 `layer.alert` 显示,需手动关闭提示信息 |
| redirect | enum | 重定向选项,`current`:当前页重定向到 `url` 地址,`url` 为空刷新当前页;`parent`:父层页重定向到 `url` 地址,`url` 为空刷新父层,并且关闭当前层;为空,不执行重定向 |
| alert | string | alert 出信息, 为空不 alert |
| close | bool | 是否关闭当前层,true 关闭,false 不关闭 |
| url | string | 重定向的链接,请参考 redirect 用法 |
| data | mixed | 需返回的数据,格式根据自己需要而定,只要能转化为 json 就行 |
| code | int | 错误码,0:成功,其他:错误 |
| extend | array | 扩展数据,在 code、msg、data、opt 这个层级添加自己需要的数据 |

关于此方法的具体使用可以参考下面 `javascript` 代码
```

function ajax_progress(data, callback, param) {
if (data.code == 0) {
if (typeof data.opt == "object") {
var index = parent.layer.getframeIndex(window.name);
if (data.opt.close) {
parent.layer.close(index);
}
if (data.opt.redirect == 'current') {
// 当前页重定向
if (!data.opt.url) {
// 刷新
window.location.reload();
} else {
// 重定向到 url
window.location.href = data.opt.url;
}
} else if (data.opt.redirect == 'parent') {
// 父层重定向
if (!data.opt.url) {
// 刷新
window.parent.location.reload();
} else {
// 重定向到 url
window.parent.location.href = data.opt.url;
}
// 关闭当前层
parent.layer.close(index);
}
// 父层弹出信息
if (data.opt.alert) {
parent.layer.alert(data.opt.alert);
parent.layer.close(index);
}
if (!data.opt.close && !data.opt.redirect && !data.opt.alert) {
parent.layer.msg(data.msg);
parent.layer.close(index);
}
} else {
layer.msg(data.msg);
}
if (typeof callback == "function") {
if (typeof param != "undefined") {
param.unshift(data)
} else {
param = [data];
}
callback.apply(this, param);
}
} else {
layer.alert(data.msg, {title: "错误信息", icon: 2});
}
}
```
###ajax_return_adv_error
快速返回一条错误信息
```

function ajax_return_adv_error($msg = '', $code = 1, $redirect = '', $alert = '', $close = false, $url = '', $data = '', $extend = [])
{
return ajax_return_adv($msg, $alert, $close, $redirect, $url, $data, $code, $extend);
}
```
##带 return 返回
如果调用的方法是最后使用 return 返回的,可以直接使用 return 返回数据
###返回 json 格式数据
例如 `return ajax_return_adv('操作成功')` , `return ajax_return_adv_error('操作失败')` , `return thinkResponse::create($data, 'json')`
###返回文本数据(不带HTML)
例如 `return '我是纯文本'`, `return thinkResponse::create('我是纯文本')`
###返回文本数据(带HTML)
如果直接使用 `return` 返回数据的话,会对 HTML 进行 `htmlspecialcode` 编码,为了不被编码,只能采取 `return thinkResponse::create('我不是被编码')`

##不带 return 返回
我们经常会用到一些过滤器,有时需要在过滤里直接返回数据,这时如果使用 `return` 就很不方便了,这时可以使用 `thinkResponse()` 和 `HttpResponseException` 异常类,抛出异常即可

###返回 json 格式数据
例如 `throw new HttpResponseException(ajax_return_adv_error("登录超时,请先登陆", 400))`

###返回文本数据
例如 `throw new HttpResponseException(new Response('文本'));`

##Url 重定向
不需要引入 traits `traitscontrollerJump`,直接使用:`throw new HttpResponseException(new Redirect('Pub/login'));`


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/214021.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号