CakePHPにて、非同期通信でサーバーにアクセスするコードを書いているところですが、データが次のファイルに渡せません。
ファイル構成は、index.ctp(入力)、post.js(script)、post.ctp(サーバー処理)で(詳細なコードは下記に示します。)、
index.ctp → post.jsにはうまく値が渡っているのですが、post.jsにて$.post送信した際、post.ctpにてindefined indexで出力されてしまいます。
コードについては、参考書、ネットのサンプルをもとに少しいじっております。
コードに問題があるのか、または、そもそもCakePHPでajaxを利用するためには宣言が必要なのでしょうか?
申し訳ありませんが、ご教授ください。
以下、実際のコードになります。
/* app/View/Users/index.ctp */
// jsファイルの宣言
// formにて、ボタンをクリックしたら、ajaxPostFunc関数が作動するようにする。引数にはPHPにて変数を入れる(引数は2つ)。
<form> <input id="ctlButton" type="button" value="フォローする" onClick="ajaxPostFunc('<?php echo $userId; ?>', '<?php echo $followUser; ?>');" /> </form>/* app/webroot/js/post.js */
// ajaxPostFunc関数の処理。引数1をinput1として、引数2をinput2として送信する。
function ajaxPostFunc(param1, param2) {
$.post("post",
{input1: param1, input2: param2},
function(json){alert("成功");});
}
/* app/Controller/UsersController.php */
// post.ctpはレンダー機能を無効にし、処理のみコントローラーで行いたい。
public function post () {
$this->autoRender = FALSE;
$this->set('myInput1', $this->request->data['input1']);
$this->set('myInput2', $this->request->data['input2']);
}
調べると、post.jsで名付けたinput1、input2がpost.ctpに渡っていないようです。
そのため、post.ctpにてindefined index: input1、input2が出力されてしまいます。
申し訳ありませんが、宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/21 13:46
2015/12/03 09:18