Метод ajax
Метод ajax применяется к объекту запроса и возвращает логическое значение true, если запрос был отправлен через AJAX. Определение основывается на наличии заголовка X-Requested-With со значением XMLHttpRequest. Этот заголовок автоматически добавляется большинством JavaScript-библиотек, таких как jQuery, Axios и другими.
Синтаксис
<?php
$request->ajax();
?>
Метод не принимает параметров и возвращает логическое значение.
Пример
Давайте проверим, является ли текущий запрос AJAX-запросом, и выведем соответствующее сообщение:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index(Request $request)
{
if ($request->ajax()) {
echo "This is an AJAX request";
} else {
echo "This is a regular request";
}
}
}
?>
Пример
Давайте используем метод ajax в контроллере для возврата различных типов ответов в зависимости от типа запроса:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppModelsArticle;
class ArticleController extends Controller
{
public function getArticles(Request $request)
{
$articles = Article::all();
if ($request->ajax()) {
return response()->json($articles);
}
return view('articles.index', ['articles' => $articles]);
}
}
?>
Пример
Давайте обработаем AJAX-запрос с данными формы и вернём JSON-ответ:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppModelsArticle;
class ArticleController extends Controller
{
public function store(Request $request)
{
if ($request->ajax()) {
$article = new Article();
$article->title = $request->input('title');
$article->text = $request->input('text');
$article->save();
return response()->json([
'success' => true,
'article' => $article
]);
}
return redirect()->back()->with('error', 'Invalid request type');
}
}
?>
Пример
Давайте используем метод ajax в маршруте для проверки запроса и возврата соответствующего ответа:
<?php
use IlluminateSupportFacadesRoute;
use IlluminateHttpRequest;
Route::get('/articles', function (Request $request) {
if ($request->ajax()) {
return response()->json(['message' => 'AJAX request received']);
}
return view('articles.index');
});
?>
Результат выполнения кода для AJAX-запроса:
{"message": "AJAX request received"}
Результат выполнения кода для обычного запроса:
"HTML view rendered"
Смотрите также
-
метод
wantsJson,
который определяет, ожидает ли клиент JSON-ответ -
метод
expectsJson,
который проверяет, ожидается ли JSON-ответ -
метод
method,
который возвращает HTTP-метод запроса -
метод
isMethod,
который проверяет соответствие HTTP-метода