Laravel → ajax-запросы и VerifyCsrfToken
Если в бекенде сайта используется фреймворк Laravel и просто так взять и отправить ajax-ом POST-запрос, то ничего не выйдет. Вернее, выйдет, но ошибка наподобие такой:
1 | TokenMismatchException in VerifyCsrfToken.php line 46:
|
Исправить такое очень просто, нужно передать недостающий токен. Чтобы не возиться с токеном в каждом запросе, просто настроим его глобально. Добавим в основной шаблон мета-тег с токеном.
1 2 3 4 5 6 7 | <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
|
И установим токен в заголовки по умолчанию.
1 2 3 4 5 | $.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
|
jQuery → Ajax
Не прошло и полгода, как технология ajax проникла в мою деятельность :) Здесь, в частности, она применилась к отправке комментариев (не без участия jQuery).
Лучше, конечно, поменьше слов и побольше кода, но читать дальше не советую, так как вряд-ли кто-то увидит здесь что-нибудь новое
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | jQuery(document).ready(function() {
jQuery('#submit').click(function() {
var dataForm = jQuery('#CommentForm').serialize();
jQuery.ajax({
url: '/index/addcomment',
data: dataForm,
type: 'POST',
success: function() {
jQuery('#comments').load('/topic.php #comments > *');
}
});
return false;
});
});
|
PHP → Комментарии
Появилась возможность оставлять комментарии от зарегистрированный и незарегистрированных пользователей.
Теперь необходимо прикрутить сюда AJAX.