jQueryのajaxでフォーム送信時にPOST前にDBの重複チェックを行い、チェックに引っかからなければそのままPOST送信、
チェックに引っかかった場合は送信処理を中断してアラート出力のスクリプトを作成中です。
問題は判定エラー時にアラート表示されても確認後にPOST送信が行われてしまいます。
非同期通信用の ajaxJsonResult
は共通で使用しているためなるべくコードを流用したいのですが、
現状の構成でsubmitのイベントキャンセル伝達はできなでしょうか?
javascript
1// jsonデータをajax送信 2function ajaxJsonResult(url, datas, timeout, caches){ 3 return new Promise(function(resolve){ 4 $.ajax({ 5 url: url, type: 'POST', data: datas, timeout: timeout, contentType: "application/json", dataType: "json", caches: caches, 6 }).done(function(results){ 7 resolve(results); 8 }).fail(function(jqXHR, textStatus, errorThrown){ 9 console.log("データ取得失敗") 10 }); 11 }) 12} 13 14// 送信前にバックエンドでデータの重複チェック 15$('form').submit(function(e) { 16 ajaxJsonResult('/post_url/', {"id":"1"}, 5000, true).then((results) => { 17 if(results.status == "success"){ 18 // 判定クリア時は追加処理後に送信 19 }else{ 20 // 判定エラー時はフォーム送信中断 21 alert("重複エラー"); 22 e.stopPropagation(); // submit処理中止 23 } 24 }).catch((err) =>{ console.error(err);}); 25}); 26
※バックエンドはDjangoで送受信処理は問題なく実装できております。
どうぞ宜しくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/09 22:49