无法通过ajax调用来对Controller函数进行调用

时间:2018-10-05 16:49:56

标签: php jquery ajax error-handling cakephp-3.0

我知道这个论坛已经回答了类似的问题。我已经尝试了stackoverflow中提供的许多解决方案来解决该问题,但仍无法解决。因此,期待您的专业意见。

我正在尝试使用Cakephp 3通过ajax调用对表单提交的AjaxController函数进行调用。这里的问题是我收到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 :(得分:0)

根据Cakephp:

  

如果身份验证器返回null,则AuthComponent会将用户重定向到   登录操作。如果是AJAX请求,并且配置ajaxLogin为   指定要呈现的元素,否则为403 HTTP状态代码   返回。

我认为您没有指定任何授权方案。那就是为什么根据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 > Authentication > Handling Unauthenticated Requests

CakePhp > Authentication > Using No Authorization