
はじめに
CakePHP初心者です。
業務で使い始めました。
やりたいこと
CakePHP3.5.0でPOST通信するフォームに、
submitイベントをjQueryで拾ったときに、hidden要素を追加して送りたい。
流れ
(1)ユーザがページにアクセス。Form外のDOMを操作
(2)ユーザがフォームの送信ボタンを押下
(3)jQueryのon('submit', function)
が formのサブミットを検知
(4)jQueryでDOMの必要な部分を取得
(5)フォームの送信データに(4)で取得したものをくっつけて送信
やったこと
とりあえずformを用意。
php
1<?= $this->Form->create(null, ['type' => 'post', 'url' => ['controller' => 'controller名', 'action' => 'メソッド名']]); ?> 2<button type="submit" class="button" id="output">送信</button> 3<input type="hidden" name="id" value="<?= $id ?>"> 4<?= $this->Form->end(); ?>
submit検知用JS
js
1$('form').on('submit', function () { 2 // 取得 3 let lines = $('table > tbody').find('tr'); 4 let form = $(this).parent().find('form')[0]; 5 6 // ユーザがいじったものをformに 7 $(lines).each(function (key, element) { 8 // 各行のテキストを取得 9 let name = $(element).find('.name').text(); 10 let value = $(element).find('.value').text(); 11 12 // フォームを擬似的に作成 13 $(form).append('<input type="hidden" name="' + name + '" value="' + value + '">'); 14 }); 15 16 $(form).submit(); 17 18});
アクセスした先のコントローラー
php
1// データをすべて取得 2$data = $this->request->getData(); 3 4debug($data); 5die; 6
上記コードで、403が帰ってくる。
ちなみに、アドレスに直接アクセスする(GETアクセスする)と、正常にページが表示されます。
原因はわかりません。。。
やり方をご存じの方がいらっしゃいましたら、
ご教示いただけますと幸いです。
よろしくお願いいたします。
参考
https://qiita.com/mkn_ppr/items/8c47cefb1934045481ff
https://www.sejuku.net/blog/31050
https://blog.s-giken.net/306.html
http://raining.bear-life.com/jquery/jquery%E3%81%A7submit%EF%BC%88%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%EF%BC%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95


回答2件
あなたの回答
tips
プレビュー