cakephp jquery AJAX 函数没有给出任何输出,但抛出了403错误

slwdgvem  于 2022-11-11  发布在  PHP
关注(0)|答案(2)|浏览(167)

我在jquery中有一个 AJAX 函数调用cakephp4函数。这个函数不起作用,因为它给出了一个403禁止错误。这个错误是关于头的,但是我找不到我需要确切地修复这个错误。
这段代码运行后确实得到了var(alert验证了这一点)。

var freeassessmentid = "<?=$testid?>";

  $.ajax({
            url: "/freeassessments/freeasssesmenFinaltResult", //path is correct and it can be tested on its own
            method: "POST",
            dataType: "html",
            data: { freeassessmentid:freeassessmentid  },
            success: function(response) {
                //console.log(response);

                  $('#display-area').append(response);  //no output
               }

            });

public function freeasssesmenFinaltResult($freeassessmentid=0)
 {
//debug('test');
 $html .= '<li class="listyle" style="height: auto;">hi<br/></li>';
          $html .= '</ul>';
//no output

 //https://stackoverflow.com/questions/36666256/jquery-ajax-call-results-in-error-status-403
osh3o9ms

osh3o9ms1#

AJAX URL应为:

url: "/freeassessments/freeasssesmen-finalt-result",

对url中的操作/方法使用kebab大小写,对控制器中的操作/方法使用camel大小写

yzuktlbb

yzuktlbb2#

AJAX 调用期间,必须在头中传递CSRF标记。
您可以通过多种方式获得CSRF令牌。
最简单的一个办法是:
您可以将bellow代码添加到父布局的head标签或任何模板文件中。

<?php echo $this->Html->meta("csrfToken", $this->request->getAttribute("csrfToken")); ?>

在 AJAX 的时候,你必须得到这个csrf标记,并将它传递给ajax头。

var token = $("meta[name='csrfToken']").attr("content");
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': token
    }
});
$.ajax({
    url: "path/to/controller/method", 
    method: "POST",
    data: { pram1:val },
    success: function(response) {
        //console.log(response);   
    }        
});

我希望它能有所帮助:)

相关问题