控制器不能 return false
Can't return false with controller
我遇到了一个我不明白的问题。 (我是 php 和 jquery 的新手)。我似乎无法获得 return false 的函数,当传递给 jq 中的某些东西时它将 return null。
我用这个调用函数:
$.ajax({
method: "GET",
url: "/auth/check/",
success: function (response) {
alert(response);
}
});
我有一个函数:
public function authUser()
{
$r = false;
if (Auth::check()) {
$r = true;
}
return $r;
}
或者在一条路线内,两者做同样的事情。
Route::get('auth/check',function() {
return (Auth::check()) ? True : False;
});
使用 dd 我可以确认它们确实会导致错误或正确。然而,当它被 returned 时,对我的 jq 的响应为空。
但是,如果我将 false 更改为其他内容,比如字符串 'test' 它将 return 'test'.
当我希望它为 false 时,我可以通过将 return 更改为 0 来解决这个问题,但我想知道是什么导致了这种行为?
您需要 return false 作为 JSON 对象 :
Route::get('auth/check',function() {
$authStatus = (Auth::check()) ? True : False ;
return response()->json([
'isAuth' => $authStatus
]);
});
要使用您的 javascript 访问它,请使用:
...
success: function (response) {
alert(response.isAuth);
}
...
如果您 return 一个字符串而不是布尔值,Laravel 应该将其转换为完整响应并 return 将其发送给客户端
Route::get('auth/check',function() { return (Auth::check()) ? 'True' : 'False'; });
您可以 return 来自控制器的基本字符串或数组,并自动生成响应。如果你想要更多的控制,你可以自己创建 response
对象。您可以阅读更多相关信息 here。
我遇到了一个我不明白的问题。 (我是 php 和 jquery 的新手)。我似乎无法获得 return false 的函数,当传递给 jq 中的某些东西时它将 return null。
我用这个调用函数:
$.ajax({
method: "GET",
url: "/auth/check/",
success: function (response) {
alert(response);
}
});
我有一个函数:
public function authUser()
{
$r = false;
if (Auth::check()) {
$r = true;
}
return $r;
}
或者在一条路线内,两者做同样的事情。
Route::get('auth/check',function() {
return (Auth::check()) ? True : False;
});
使用 dd 我可以确认它们确实会导致错误或正确。然而,当它被 returned 时,对我的 jq 的响应为空。 但是,如果我将 false 更改为其他内容,比如字符串 'test' 它将 return 'test'.
当我希望它为 false 时,我可以通过将 return 更改为 0 来解决这个问题,但我想知道是什么导致了这种行为?
您需要 return false 作为 JSON 对象 :
Route::get('auth/check',function() {
$authStatus = (Auth::check()) ? True : False ;
return response()->json([
'isAuth' => $authStatus
]);
});
要使用您的 javascript 访问它,请使用:
...
success: function (response) {
alert(response.isAuth);
}
...
如果您 return 一个字符串而不是布尔值,Laravel 应该将其转换为完整响应并 return 将其发送给客户端
Route::get('auth/check',function() { return (Auth::check()) ? 'True' : 'False'; });
您可以 return 来自控制器的基本字符串或数组,并自动生成响应。如果你想要更多的控制,你可以自己创建 response
对象。您可以阅读更多相关信息 here。