質問: 現在上記タグ、またはcakePHP3をつかって画面遷移処理を作っています。 htmlにformがあって、action属性で遷移先(のアクション)を指定しています。 submitボタンを押すと、 jQueryのsubmitイベント内のajax処理を行います。 なので ボタン押下→jQueryでajax処理→画面遷移 すると思ってます。 実際に大概そのように処理されるのですが、たまにajaxのfailに入ってしまうことがあるのです。 もしかしてajaxが非同期だから、ajaxの処理が終わる前に画面遷移処理が走り、保持しているデータが変わったりしてエラーが発生しているのか。 といった可能性を懸念しています。 そのようなことは可能性としてあるでしょうか? submitイベント内のajax処理より先にformに指定している遷移先へ移動してしまうといったような。 わかる方、あるいは他の可能性を教えていただける方がいればご指導ご鞭撻のほどよろしくお願い致します。
回答: 基本的に `ajax` は非同期処理なので `submit` のデフォルトアクションは `ajax` 処理が終わるまで待機する事はありません。 `async: false` にすれば待機しますが、`ajax` 処理が終わるまで画面が固まります。 その設計で問題が少ないのは `event.preventDefault` でデフォルトアクションを抑止しておき、`ajax` が終わってからコールバックで `form.submit()` を呼び出す動作になると思います。 Re: k499778 さん