thinkphp5的ajax响应问题

这是之前对的帖子 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|隐藏机器人聊天)
  • @Ta / 2024-06-04 / /

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

  • @Ta / 2024-06-09 / /

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

  • @Ta / 2024-06-09 / /
    是你自己的问题 

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

    @胡椒舰长
    参考: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()是哪个版本里的

添加新回复
回复需要登录