CakePHP 3.x通过ajax将值从Javascript传递到PHP,$\u POST为空

CakePHP 3.x通过ajax将值从Javascript传递到PHP,$\u POST为空,javascript,php,ajax,cakephp,Javascript,Php,Ajax,Cakephp,Ajax可以成功地向post数据({“booking”:{“testdata”:“testdata”}})发出警报。问题是php代码无法获取$\u POST js和php都存在于同一个页面中:localhost/booking/index.ctp 这是我的密码: <script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.min.js"></script> <script>

Ajax可以成功地向post数据(
{“booking”:{“testdata”:“testdata”}}
)发出警报。问题是php代码无法获取
$\u POST

js和php都存在于同一个页面中:
localhost/booking/index.ctp

这是我的密码:

<script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.min.js"></script>
    <script>
                    $.ajax({

                            url: "<?php echo $this->Url->build([
                            "controller" => "booking",
                            "action" => "index",
                            "_ext" => "ctp",
                            true
                            ]);?>", //This is the current doc


                            type: "POST",
                            dataType:'json',
                            data: {'testdata': 'testdata'} ,
                            success: function(data){
                              //  console.log(data);
                                alert(JSON.stringify(data));
                            }
                        });

                    </script>

                    <?php
                    if (isset($_POST['testdata'])){
                        $getv = $_POST['testdata'];
                        echo json_encode($getv);
                    }
                    else {
                        echo "none";
                    }
                    ?>

$.ajax({
url:,//这是当前单据
类型:“POST”,
数据类型:'json',
数据:{'testdata':'testdata'},
成功:功能(数据){
//控制台日志(数据);
警报(JSON.stringify(数据));
}
});

这应该在控制器中

<?php
if (isset($_POST['testdata'])){
    $getv = $_POST['testdata'];
    echo json_encode($getv);
}
else {
    echo "none";
}
?>

在您的ajax中,您可以使用相同的代码来测试这一点。

您使用这段代码究竟想要实现什么?您的意思是,这不应该在控制器中,因为从控制器回显数据是不可能的(就像直接访问超全局数据一样);)
public function initialize()
{
    $this->loadComponent('RequestHandler');
}
public function yourFunction()
{
    $yourvar = $this->request->getData('testdata');
    $this->set([
        'success' => true,
        'data' => $yourvar,
        '_serialize' => ['success', 'data']
    ]);
}