CakePHP 3.x通过ajax将值从Javascript传递到PHP,$\u POST为空
Ajax可以成功地向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>
{“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']
]);
}