Как продолжить отправку формы после вызова AJAX?

Я хочу проверить пользовательские записи в сообщении WordPress после нажатия кнопки «Отправить», отобразить сообщение об ошибке, если есть проблемы, и отправить форму, если все в порядке. У меня есть функция PHP, которая делает проверку, возвращаяtrue если данные вform_data все в порядке, код ошибки в противном случае. Следующий JavaScript выполняет запрос AJAX и должен был продолжить отправку формы после успешной проверки, но это не так:

        jQuery(document).ready(function() {
            jQuery('#post').submit(function() {

                var form_data = jQuery('#post').serializeArray();
                var data = {
                    action: 'ep_pre_submit_validation',
                    security: '<?php echo wp_create_nonce( 'pre_publish_validation' ); ?>',
                    form_data: jQuery.param(form_data),
                };
                var proceed = false;
                jQuery.post(ajaxurl, data, function(response) {
                    if (response.indexOf('true') > -1 || response == true) {
                        proceed = true;
                    } else {
                        alert("Error: " + response);
                        proceed = false;
                    }
                });
                jQuery('#ajax-loading').hide();
                jQuery('#publish').removeClass('button-primary-disabled');
                return proceed; //breakpoint here makes the code run
            });
        });

Код адаптирован изWPSE вопрос, который изначально не работал для меня, так как форма не была отправлена. Я обнаружил, что если функция jQuery связана с.submit() возвращает true, форма должна быть отправлена, вот что я пытался реализовать. С приведенным выше кодом, кажется, сначала не работает (форма не отправляется, когда нет ошибок), но при тщательном рассмотрении с Firebugproceed Кажется, получить правильный результат, если точка останова вставлена вreturn proceed линия. Работает как задумано с действительными даннымитолько если я немного подожду при достижении точки останова, а затем продолжу выполнение. Если есть ошибки, предупреждение выдается без проблем.

Каков наилучший способ справиться с этим?

РЕДАКТИРОВАТЬ

Основываясь на ответе @Linus ниже, следующий код работает как с действительными, так и с недействительными данными:

        jQuery(document).ready(function() {
            jQuery('#post').submit(function() {
                if(jQuery(this).data("valid")) {
                    return true;
                }

                var form_data = jQuery('#post').serializeArray();
                var data = {
                    action: 'ep_pre_submit_validation',
                    security: '<?php echo wp_create_nonce( 'pre_publish_validation' ); ?>',
                    form_data: jQuery.param(form_data),
                };
                jQuery.post(ajaxurl, data, function(response) {
                    if (response.indexOf('true') > -1 || response == true) {
                        jQuery("#post").data("valid", true).submit();
                    } else {
                        alert("Error: " + response);
                        jQuery("#post").data("valid", false);

                    }
                    //hide loading icon, return Publish button to normal
                    jQuery('#ajax-loading').hide();
                    jQuery('#publish').removeClass('button-primary-disabled');
                });
                return false;
            });
        });

Ответы на вопрос(4)

Ваш ответ на вопрос