質問: cakePHPで選択データの出力フォームを改修しています 画面で設定した日付を帳票に出力させたく、 inputを使用して入力フォームを作成しました。 しかし、出力ボタンが数種類あり、それぞれでPOSTされる項目が異なっている状態です。 あまり既存の処理に変更は加えたくはなく、 ビューファイルの下部に 「ファイル(input_date.txt)に入力した日付を書き込む」ための 新規ファンクションを作成することで対応したいと考えています。 ファイルへの書き込み、書き込まれたデータの帳票への出力は成功したのですが、 肝心な、画面で設定した日付の取得方法が不明な状態です。 押下されたボタンによってPOST範囲が異なるため、 他の手法で取得したいのですが、 方法がわからない状態です。 jQueryを使用すればinputのvalueを取得できるらしいのですが... コードをご教授願います。 不足な情報等あれば、お知らせください。 view(output.ctp) ---------------- --- **input箇所** F->input("input_date",array('type' => 'date', 'dateFormat' => 'YMD','monthNames' => false, 'id' => 'inputDateId'));?> --- **ajaxPOST送信箇所** --- **ファイル書き込み箇所** function test(){ write($write_date); $file->close(); ?> }
回答: idが設定されてあれば Selectors - jQuery 日本語リファレンス #id - jQuery 日本語リファレンス ``` $(function(){ // Ajax button click $('#ajax').on('click',function(){ $.ajax({ url:'./request.php', type:'POST', data:{ 'y':$('#inputDateIdYear').val(), // 年 'm':$('#inputDateIdMonth').val(), // 月 'd':$('#inputDateIdDay').val(), // 日 } }) // Ajaxリクエストが成功した時発動 .done( (data) => { $('.result').html(data); console.log(data); }) // Ajaxリクエストが失敗した時発動 .fail( (data) => { $('.result').html(data); console.log(data); }) // Ajaxリクエストが成功・失敗どちらでも発動 .always( (data) => { }); }); }); ``` みたいな書き方で年月日を取得して送信できるはず。 ボタンにイベントを登録するのを忘れずに。 参考: \[jQuery\]フォーム操作、input・selectの値(value)取得のあれこれ - Qiita んで、POSTせずjs(jQuery)上からphpに送信するためにjQuery.Ajaxつかいます。 はじめてのAjax(jQuery) 2018年版 - Qiita 参考記事内の「$.ajax」とかかいてあるあたりの流れをおさらいしてください。