質問: $this->input->post(); } ``` ### 試したこと ●textareaに送りたいjson文字列がセットされているか? textareaを表示にした上で、submitをreturn falseにして確認しました。 欲しい情報が入っているのを確認しました。 ●そもそも、そのtextareaの値がサーバーに渡せるか? JSのjson文字列をセットしている処理をコメントアウトし、 手入力で文字列を入力して試してみました。 入力した文字列がサーバーで受け取ることができました。 ●json文字列に送れない文字が含まれてるんじゃないか? JSのjson文字列をセットしている箇所で、 固定文字列「aaa」をtextareaにセットしてみました。 サーバーで受け取ることが**できませんでした**。 ●一縷の望みをかけてonsubmitの処理をボタンのonclickに移してみる 望みは潰えました。 以上から、「then」が呼ばれてるときにはすでにsubmitされてる?と予測までは立てたのですが、手詰まりになりました・・・。 ### 補足情報(言語/FW/ツール等のバージョンなど) PHP 7 CodeIgniter3 Dexie.js(IndexedDBの操作用ライブラリ) jQuery
回答: > > 「then」が呼ばれてるときにはすでにsubmitされてる? > > > はい、IndexedDBは**非同期で**動作しますので(MDN)、`onsubmit`から呼び出すと 1. IndexedDBのデータ取得が動き出す 2. (データ取得中に)onsubmitが終了する 3. 送信が行われる 4. IndexedDBの処理が終了して、値をセットする という流れになります。3の送信には間に合いません。 解決策としては、送信ボタンをただのボタンにして、`onclick`から`regist`を呼んで、その`.then`の中でフォームを`.submit()`させるようにすれば、確実にデータセット後の実行となりますl.