невозможно выполнить вызов функции контроллера через вызов ajax - PullRequest
0 голосов
/ 05 октября 2018

Я знаю, что на этот вопрос был дан ответ на этом форуме.Я пробовал многие решения, предоставленные в stackoverflow для этой проблемы, но не смог ее решить.Поэтому я жду некоторых предложений от вашего опыта.

Я пытаюсь сделать вызов функции AjaxController при отправке формы через вызов ajax с использованием Cakephp 3. Проблема в том, что я получаю ошибку 403.Я еще не нашел решение для этого.Я вижу, что форма передает значение, но вызов Ajax не может достичь функции контроллера.Я получаю следующую ошибку

POST http://localhost/shoppingCart/ajax/ajaxTest 403 (запрещено)

AjaxController:

 public function ajaxTest(){
    $result = "hello";
    return $result;


}

    script:(view.ctp of AjaxController)

     $(document).ready(function(){
            $('button').click(function(event){
              var form_data = $(this).serialize();
              var hidden_value = $('[name="id"]').val();
                  // alert("your form data "+hidden_value);//works fine here
                  event.preventDefault();
                  $.ajax({
                      url:'../ajaxTest',
                      type:'POST',
                      data : hidden_value,
                      success:function(result){
                        alert('success');
                          $("#result").text(result);
                      },

                      error:function(error){

                        alert('error ='+(error.Message));
                      }
              });

            });
        });

        //  });
    </script>

1 Ответ

0 голосов
/ 06 октября 2018

Согласно Cakephp:

Если аутентификатор возвращает ноль, AuthComponent перенаправляет пользователя на действие входа в систему.Если это AJAX-запрос, и в конфигурации указан ajaxLogin, то элемент отображается, в противном случае возвращается код состояния HTTP 403.

Я думаю, вы не указали никакой схемы авторизации.Вот почему, согласно cakephp, вы получаете ошибку 403.

Если вы не используете схему авторизации, обязательно проверьте авторизацию самостоятельно в beforeFilter вашего контроллера или с другим компонентом.

Вы можете сделать действия общедоступными (в beforeFilter или инициализировать), используя:

// Allow all actions
$this->Auth->allow();

// Allow only the index action.
$this->Auth->allow('ajaxTest');

// Allow only the view and index actions.
$this->Auth->allow(['ajaxTest', 'index']);

CakePhp> Аутентификация> Обработка неаутентифицированных запросов

CakePhp>Аутентификация> Использование без авторизации

...