提问者:小点点

Laravel-检查是否存在Ajax请求


我一直试图找到一种方法来确定Laravel中的Ajax调用,但我没有找到任何关于它的文档。

我有一个index()控制器函数,我希望根据请求的性质对响应进行不同的处理。基本上,这是一个资源控制器方法,它绑定到获取请求。

public function index()
{
    if(!$this->isLogin())
        return Redirect::to('login');
            
    if(isAjax()) // This is what I am needing.
    {
        return $JSON;
    }

    $data = array(
        'records' => $this->table->fetchAll()
    );

    $this->setLayout(compact('data'));
}

我知道用PHP确定Ajax请求的其他方法,但是我想要一些特定于Laravel的方法。

谢谢

更新:

我试着用

if(Request::ajax())
{
    echo 'Ajax';
}

但我收到了这个错误:

非静态方法照明\Http\请求::ajax()不应该静态调用,假设$this从不兼容的上下文

该类表明这不是一个静态方法。


共3个答案

匿名用户

也许这有帮助。你必须引用@参数

         /**       
         * Display a listing of the resource.
         *
         * @param  Illuminate\Http\Request $request
         * @return Response
         */
        public function index(Request $request)
        {
            if($request->ajax()){
                return "AJAX";
            }
            return "HTTP";
        }

匿名用户

要检查ajax请求,您可以使用if(请求::ajax())

注意:如果您使用的是laravel 5,则在控制器中更换

use Illuminate\Http\Request;

具有

use Request; 

我希望它能起作用。

匿名用户

您使用了错误的请求类。如果要使用Facade,如:Request::ajax(),则必须导入此类:

use Illuminate\Support\Facades\Request;

而不是Illumiante\Http\请求

另一种解决方案是注入真实请求类的实例:

public function index(Request $request){
    if($request->ajax()){
        return "AJAX";
    }

(现在您必须导入illumb\Http\Request