已掉线,重新登录

首页 > 绿虎论坛 > 杂类 > 超级灌水 (发帖)

标题: thinkphp5的ajax响应问题

作者: @Ta

时间: 2024-06-03

点击: 150

这是之前对的帖子 https://hu60.cn/q.php/bbs.topic.103243.html

问题是: tp的响应ajax,会返回json,但是有时候不需要json

有以下几个方法

第一个就是parseJSON

又不是没数据,想要什么就随便拿了$('div', $.parseJSON(data)).html()

第二个就是临时改变配置

在需要输出html的控制器前增加一句Config::set('default_ajax_return','html');
永久改变是不推荐的做法,因此临时改变也算是不错的方法
tp默认配置是json,在app目录下的config.php中default_ajax_return

第三个是今天研究ajax的发现

偶然想到一个问题,ajax是怎么识别的呢?
一查之下就知道了,请求头带了一个X-Requested-With : XMLHttpRequest
在请求时加一个header即可,X-Requested-With的值随便写

        $.ajax({
            headers: {
                "X-Requested-With":"windows_20_business"
            },
            url: '/api',
            type: 'get',
            success: (data) => {
                console.log(data)
            }
        });

[隐藏样式|查看源码]


『回复列表(4|隐藏机器人聊天)』

1.

梦回 2017 那年大学宿舍晚上 editplus 手撸 tp5 接口

(/@Ta/2024-06-04 20:27//)

2.

@水木易安,膜拜大佬,17年我还在上大学,大佬都开始php了
https://www.chengyao.xyz

(/@Ta/2024-06-09 07:34//)

3. 是你自己的问题 

return Response::json() 还是Response::HTML()
(/@Ta/2024-06-09 10:34//)

4.

@胡椒舰长
参考:https://www.kancloud.cn/manual/thinkphp5/118048
默认情况下,控制器在ajax请求会对返回类型自动转换,默认为json
因此在不修改默认类型,无论你是
输出视图:return $this->fetch('index/action');
输出json:return json(['a'=>123]);
输出数组:return ['a'=>123];
用ajax访问,都返回json
我重载dom区域其实就是懒的多写俩函数和路由,没有别的目的
其实我也可以这样,直接操作数据

$data=['a'=>123];
return request()->isAjax()?$data:$this->fetch('index/action',$data);`

最后问下Response::HTML()是哪个版本里的

(/@Ta/2024-06-09 13:47//)

回复需要登录

7月1日 03:06 星期二

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1