我在knockout.js 表单上使用AJAX 来发布CakePHP 应该接收的一些信息,但是,Cake 似乎没有找到任何东西。此外,尽管 POST 的状态为 200(OK),但警报并未出现。
这是AJAX
$.ajax({
url: "/orders/finalize_payment",
type: "POST",
dataType: "json",
contentType: "json",
data: JSON.stringify({"customer": customer_id}),
success: function(){
alert("success");
}
});
这是订单控制器中的相应操作。现在,我将它完全剥离到最低限度。
function finalize_payment($id = null){
$this->layout = false;
$this->autoRender = false;
if($this->request->is('post')){ //the user has submitted which status to view
print_r($this->request->data);
echo "test"; //just to make sure it's reaching this point
}
}
当我在 chrome 中打开网络选项卡时,它将请求有效负载显示为
customer: 1
POST 显示为成功,状态 200。我检查了响应标头,它只显示
array
(
)
test
尽管 chrome 显示了正在发送的有效负载,但 CakePHP 显然没有找到它。
更新
我将请求从 AJAX 更改为 $.post 并且它有效。我仍然不知道为什么
$.post("/orders/finalize_payment",{"customer_id":customer_id},function(data){
alert('success');
});