日付を尋ねるダイアログモーダルを開くリンクがあります。送信をクリックすると、javascript がフォーム データを取得し、ajax 呼び出しを生成して、応答を返します。これは問題なく動作します。ただし、すぐに同じリンクをもう一度クリックしてフォームに新しい日付を送信すると、最初の ajax POST から結果が得られます。
基本的に、後続の ajax 呼び出しは元の POST データを使用しており、新しいものは何もありません。コードには、トラブルシューティングのためのアラートがあります。リセットされないいくつかの変数を設定していると仮定していますが、このイベントハンドラーは「オフ」でキャンセルされ、直後に再度追加され、変数はその関数のみの範囲内になると考えていました。
<script>
//Modal submit
$(document).off('click', '#SubmitAllChecks');
$(document).on('click', '#SubmitAllChecks', function(e) {
e.preventDefault();
var form = $('#AllChecks');
var url = form.attr('action');
var method = form.attr('method');
var data = form.serializeArray();
$.each(data, function(k,v) {
alert(v.name + ' : ' + v.value);
});
$.ajax({
url: url,
type: method,
data: data,
dataType: 'json',
beforeSend: function() {
//add load indicator
window.erpui.startload();
},
success: function(data) {
alert('xhr complete');
$.each(data, function() {
alert(this.value + ' data');
if (this.value == 'error' && this.msg != '') {
window.erpui.endload();
window.erpui.notify.error(this.msg);
window.erpui.notify.commit();
}
else if (this.value == 'success') {
window.erpui.endload();
window.erpui.notify.success(this.msg);
window.erpui.notify.commit();
$('.ui-dialog').remove();
//window.location.href="{% url all_checks %}";
//window.location.reload();
}
});
},
error: function() {
alert('error');
//remove load indicator
window.erpui.endload();
}
});
});
</script>