質問: jQueryを利用してAjaxでデータ登録をしたいときに、alert()を呼び出す場合は、問題なくデータを登録することができますが、alert()を呼び出さない場合はデータの登録に失敗します。 ``` $.ajax({ url: 'https://xxx', type: 'POST', dataType: 'json', data: JSON.stringify(form_data), }) .done(function(data){ console.log("登録完了") }).fail(function(jqXHR, textStatus){ console.log("登録失敗") }); alert("END") // ここをコメントアウトするとデータは登録できない ``` この`alert()`の部分が`console.log()`でも`setTimeout()`でもだめで、`alert()`でなければ動きません。なぜ`alert()`のみがうまく動くのかわかりません。 ちなみに、`.done()`と`.fail()`はデータが登録できたorできなかったにかかわらず、呼び出されません。ここも不思議でなりません。 `$.ajax()`の中に以下のようにしてもログは出ませんでした。 ``` $.ajax()({ success: function(result){ console.log('my message' + result); } }) ``` 話が脱線しましたが、なぜ`alert()`を呼び出す場合は登録が成功するかがわかりません。 回答をお待ちしております。
回答: すみません、自己解決しましたので回答します。 `e.preventDefault();`を置くことで対応できました。 ``` $.ajax({ ... }) .done(function(data){ console.log("登録完了") }).fail(function(jqXHR, textStatus){ console.log("登録失敗") }); e.preventDefault(); ``` `e.preventDefault();`と`alert()`の違いについて考察をしようと思います。