谁用过Pjax,请求帮助(已解决)

浏览:3991 发布日期:2016/10/17 分类:ThinkPHP5专区 关键字: pjax 前端 ajax
已解决:因为tp5返回数据的时候只判断了ajax和非ajax两种访问模式,但是Pjax算是ajax方式访问,但是又要以html方式返回,所以就有冲突,如果按照楼下的回答,在配置文件中把ajax方式返回类型改成HTML,这样可以暂时解决这个问题,但是不太方便,因为使用ajax的时候还是要用json格式的,最好就是再增加一个判断。
在think/app.php中第168行$type     = $isAjax ? Config::get('default_ajax_return') : Config::get('default_return_type');删掉,改成$isPjax = $request->isPjax();
$type = Config::get('default_return_type');
            if ($isAjax) {
                $type = Config::get('default_ajax_return');
            }
            if ($isPjax) {
                $type = Config::get('default_pjax_return');
            }
然后在配置文件中增加一项配置// 默认PJAX 数据返回格式,可选json xml ...
    'default_pjax_return'     => 'html',
即可解决问题。

---------------------------------------------------------------------------------
上面是解决方案,下面是开始遇到的问题
---------------------------------------------------------------------------------
我在前端尝试使用Pjax,但是一直有问题。<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="container">
        <a href="/ceshi">测试链接</a>
    </div>
</body>
</html>
这是前台的代码,控制器里这样写的,if (request()->isPjax()) {

            return $this->fetch('ceshi');

        } 
模板里面只写了一个<div>哈哈,这里是测试Pjax的</div>但是测试的时候前台返回的内容里面生成了很多斜杠"\r\n\t
哈哈,这里是测试Pjax的<\/div>\r\n\r\n"
请问这是怎么回事啊,试了好久都不行,是不是后台不应该用return $this->fetch('ceshi');?
最佳答案
评论( 相关
后面还有条评论,点击查看>>