Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.1-刷新Ajax导航页面_Php_Ajax_Laravel_Laravel 5_Laravel 5.1 - Fatal编程技术网

Php Laravel 5.1-刷新Ajax导航页面

Php Laravel 5.1-刷新Ajax导航页面,php,ajax,laravel,laravel-5,laravel-5.1,Php,Ajax,Laravel,Laravel 5,Laravel 5.1,在我的应用程序中,我已经使用ajax配置了导航,因此我可以非常快速地获取视图的内容(因此只有纯HTML)。 我还实现了javascript的历史记录,所以我可以在导航时修改url 但是,当我在像我的应用程序-/news这样的url上刷新页面时,当然我会得到ajax要求的相同内容:只有html的视图,但在这种情况下,我需要一个完整的视图,而不仅仅是内容 route.php Route::get('/', 'PagesController@index'); Route::get('/{page}',

在我的应用程序中,我已经使用
ajax
配置了导航,因此我可以非常快速地获取视图的内容(因此只有纯HTML)。 我还实现了javascript的
历史记录
,所以我可以在导航时修改url

但是,当我在像
我的应用程序-/news
这样的url上刷新页面时,当然我会得到ajax要求的相同内容:只有html的视图,但在这种情况下,我需要一个完整的视图,而不仅仅是内容

route.php

Route::get('/', 'PagesController@index');
Route::get('/{page}', 'PagesController@ajaxCall');
PagesController.php

class PagesController extends Controller {

    public function index(){
        return view('pages.index');
    }

    public function ajaxCall($page){
        return view('content.'.$page)->render();
    }

}

如何创建另一个路径和方法,如我的索引,在那里我可以在页面刷新时调用完整视图?

听起来很难

“ajax”这个术语非常简单。你用什么?jQuery,AngularJS

在您的情况下,最好将前端和后端分开。例如,使用AngularJS(单页应用!)与您的Laravel/Lumen后端连接。后端只能返回json结果(RESTful控制器)

阅读本文档:

为什么??我注意到,由于前端和后端的混合,您遇到了麻烦。例如,使用AngularJS,您可以创建一个单页应用程序。通过路由,您可以(重新)加载“页面”的特定部分。连接到Laravel/Lumen API并在SPA中处理json输出也非常容易。您的后端没有(html)视图,也不执行重定向


很好的例子:

您可以检测请求是否是通过AJAX发出的:

class PagesController extends Controller {

    public function index(){
        return view('pages.index');
    }

    public function ajaxCall($page){

        if(\Request::ajax()) {
           return view('content.'.$page)->render();
        } else {
           return ... //complete view
        }
    }

}

你说得对。不幸的是,我还没有关于Angular的高级知识,所以我用jQuery创建了这个应用程序。因为这些方法只会返回对ajax调用的响应,而不会返回对浏览器告诉它切换页面的响应。如果你返回一个200甚至302的视图,只有ajax请求者才能看到它,而不是浏览器。事实上,我不知道如何解决这个问题,只是为了防止混淆,这是我的Javascript:没有数据被发送到服务器,那么你为什么要发布?这是一个视图请求,所以应该是get。也许我误解了你的回答是的,我要求的是一个视图,而不仅仅是数据切换到一个更简单的方法。