Resident234
@Resident234
Back-End . PHP . Bitrix

Почему не работает AJAX в Yii2?

Yii2. Имеется форма с двумя полями. Данные с этой формы ajax-запросом отправляются в контроллер, но в результате возвращается 404.
Код скрипта :
if ( $scope.form.$valid ) {
            $http.post( '/site/githublogin/', $scope.user ).success(function( res ){
				alert(res.res);
                if ( res.res=='ok') {
                    $scope.user = {};
                    $scope.form.$setPristine();
                    $scope.greeting = "Авторизация успешна";
                } else {
                    $scope.greeting = "Ошибка авторизации. Неверное имя пользователя или пароль.";
                }
            }).error(function(err){
                $scope.greeting = err;
            });
        }


Контроллер:
public function actionGithublogin()
    {
		
		
		$res = array( 'res'=>'ok' );
        echo json_encode($res);
		
    }


Если открыть страницу /site/githublogin/ в браузере , то всё нормально, выводится {"res":"ok"}.
Csrf выключен
'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => 'DSFgksdifhiw899734hekfDFGisjdfi9374',
			'enableCsrfValidation' => false,
        ],


В чём может быть проблема ? В какую сторону копнуть ? В Yii2 новичок.
  • Вопрос задан
  • 1764 просмотра
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вероятно дело в том, что Вы не отправили CSRF токен. Поэтому при get запросе все работает, а при post ошибка, так как переданные данные не прошли проверку. Надо либо добавить в запрос CSRF токен либо отключить его проверку для данного экшена. Подробно тут: www.fantomslim.ru/articles/yii2-ispolzovanie-csrf-...
Ответ написан
Комментировать
Resident234
@Resident234 Автор вопроса
Back-End . PHP . Bitrix
$http.post( 'localhost/uprock2/site/githublogin', $scope.user ).success(function( res ){
- сработало так. всё понял. Вычислить адрес сайта (localhost/uprock2) и подставить перед /site/githublogin/
всем спасибо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы