Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 `$request->;ajax()`在使用Fetch API提取Laravel中的数据时,不会检测到ajax请求_Php_Ajax_Laravel_Fetch - Fatal编程技术网

Php `$request->;ajax()`在使用Fetch API提取Laravel中的数据时,不会检测到ajax请求

Php `$request->;ajax()`在使用Fetch API提取Laravel中的数据时,不会检测到ajax请求,php,ajax,laravel,fetch,Php,Ajax,Laravel,Fetch,在我的Laravel应用程序中,我使用fetchapi在滚动条上加载数据。下面是刀片文件中我的JS代码 let route='{{route(“load”)}}+'?q='+encodeURI('{{$para}}'); 取回(路线) 。然后(响应=>{ 如果(!response.ok){ 抛出新错误(“网络响应不正常”); } 返回response.text(); }) .然后(数据=>{ 控制台日志(数据); }) .catch((错误)=>{ console.error('error:',

在我的
Laravel
应用程序中,我使用
fetchapi
在滚动条上加载数据。下面是刀片文件中我的
JS
代码

let route='{{route(“load”)}}+'?q='+encodeURI('{{$para}}');
取回(路线)
。然后(响应=>{
如果(!response.ok){
抛出新错误(“网络响应不正常”);
}
返回response.text();
})
.然后(数据=>{
控制台日志(数据);
})
.catch((错误)=>{
console.error('error:',error);
})
在我的控制器里

公共函数加载数据(请求$Request)
{
如果($request->ajax()){
返回$request->query('q');
}
返回'notajax!';
}
它总是返回“不是Ajax!”


我不知道为什么会这样。其他库(如
jQuery
Axios

请尝试使用request()->ajax()函数,而不是$request->ajax())。我认为问题在于您在顶部导入了错误的请求。这种情况发生在我身上也是因为编辑器的缘故

在方法中使用“return”时要小心。尝试将return“notajax!”括起来;在别的地方

else{
    return 'Not Ajax!';
}
检查
X-request-With
标题是否存在

由于您正在使用fetch,因此必须手动将此标头添加到:


例如,Axios在默认情况下使用此选项,这是因为。jQuery用于除跨域请求外的所有请求。

不工作。我认为$request是正确的,因为如果删除ajax检查,我可以看到
$request->query('q')
值。他为什么要小心?如果条件为true,则返回后不会执行任何操作(因为返回了某些内容)。您的else将产生与没有else的函数完全相同的结果。甚至在FriendsOfPHP的代码风格修复程序中有一个名为
no\u无用的\u else
。非常好,解释得很好。谢谢,我也跌跌撞撞地去了,这进一步澄清了我的疑问。
fetch(route, {
  headers: {
    'X-Requested-With': 'XMLHttpRequest'
  },
})