我一直试图找到一种方法来确定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从不兼容的上下文
该类表明这不是一个静态方法。
也许这有帮助。你必须引用@参数
/**
* 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
)