イム..CakePHPの3 Ajaxリクエストの応答CakePHPの3は、私はそれを呼び出すが、私はそれを行うための正しい方法を知らない私のjavascript関数にJSON応答を送信取得しようとして
JS機能:
function add(){
//serialize form data
var formData = $('#newquestion').serialize();
//get form action
var formUrl = $(this).attr('action');
$.ajax({
type: 'POST',
url: formUrl,
data: formData,
success: function(status){
console.log('content='+status);
},
error: function(xhr,textStatus,error){
alert(error);
} });
}
CakePHPの3アクション:
public function addajax(){
if ($this->request->is('ajax')) {
$status['msg']="this is a message from cake controller";
$this->response->body(json_encode($status));
return $this->response;
}
}
質問: 上記のcakephpアクションが機能し、正しい出力を送信しますが、正しいです。 私はajaxビューまたはajaxレイアウトを使用しないと思いますか?
私は以下のようにserializeを使うと、javascript関数の関数で "undefined"と表示されます。何が間違っているのですか?それを行う正しい方法は何ですか?
以下の例も正しくありませんか?
public function addajax(){
if ($this->request->is('ajax')) {
//$this->viewBuilder()->layout('ajax');
//$this->autoRender = false; // Set Render False
$status['msg']="this is a message from cake controller";
$this->set(compact('status'));
$this->set('_serialize', ['status']);
//$this->response->body(json_encode($status));
//return $this->response;
}
}
PS:JSONとXMLのルーティングとビューを有効にしました。
あなたのアールは、あなたの CakePHPの3アクションでこれを試してみてください、あなたがPHPの配列をコードしている、JSON経由でPHPの配列を送信し、jsの機能にを応答を解析します
あなたの操作方法は正しいです。あなたのmの冒頭に追加することを忘れないでくださいエソード:$ this-> autoRender = false; 。しかし、cakephp 3でajaxを使う正しい方法であるとは言えません。この記事は役に立ちました:http://www.dereuromark.de/2014/01/09/ajax-and-cakephp/ – user3078643
記事@ user3078643はcakephp 2.0ではなく3.0を提案しています。 – user221931
@ user221931 cakephp 3.xに関するセクションがあります – user3078643