CakePHP が受け取るべき情報を投稿するために、knockout.js フォームで AJAX を使用していますが、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
}
}
クロムでネットワークタブを開くと、リクエストペイロードが次のように表示されます
customer: 1
POST は成功、ステータス 200 として表示されます。応答ヘッダーを確認したところ、表示されるだけです。
array
(
)
test
ペイロードが送信されていることをクロムが示しているにもかかわらず、CakePHP は明らかにそれを見つけていません。
アップデート
リクエストを AJAX から $.post に変更したところ、うまくいきました。理由はまだわかりません
$.post("/orders/finalize_payment",{"customer_id":customer_id},function(data){
alert('success');
});