@nash2013

Выполняются оба метода из двух разных форм. Как исправить?

Есть две вкладки с разными формами. При выполнении, например, импорта, почему-то запускается еще и экспорт по окончанию импорта. В чем проблема?
<!-- Вкладка Экспорт -->
            <div class="tab-pane active" id="tab-export">
                <form action="<?php echo $export_action; ?>" method="post" enctype="multipart/form-data" id="form-export">
                    <div class="row">
                        <div class="col-md-6">
                            <h3><?php echo $text_select_categories; ?></h3>
                            <div style="height: 460px; overflow-y: scroll; border: 1px solid #ddd; padding: 10px;">
                                <?php foreach ($categories as $category) { ?>
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="categories[]" value="<?php echo $category['category_id']; ?>">
                                            <?php echo $category['name']; ?>
                                        </label>
                                    </div>
                                <?php } ?>
                            </div>
                        </div>

                        <div class="col-md-6">
                            <h3><?php echo $text_select_attributes; ?></h3>
                            <div style="height: 460px; overflow-y: scroll; border: 1px solid #ddd; padding: 10px;">
                                <?php foreach ($attributes as $attribute) { ?>
                                    <div class="checkbox">
                                        <label>
                                            <input type="checkbox" name="attributes[]" value="<?php echo $attribute['attribute_id']; ?>">
                                            <?php echo $attribute['name']; ?>
                                        </label>
                                    </div>
                                <?php } ?>
                            </div>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-md-12">
                            <button type="submit" class="btn btn-primary" id="button-export"><?php echo $button_export; ?></button>
                        </div>
                    </div>
                </form>
            </div>

            <!-- Вкладка Импорт -->
            <div class="tab-pane" id="tab-import">
                <?php if (isset($import_report) && !empty($import_report)) { ?>
                    <div class="alert alert-warning">
                        <ul>
                            <?php foreach ($import_report as $report) { ?>
                                <li><?php echo $report; ?></li>
                            <?php } ?>
                        </ul>
                    </div>
                <?php } ?>

                <?php if (!empty($success)) { ?>
            <div class="alert alert-success"><?php echo $success; ?></div>
        <?php } ?>

        <?php if (!empty($error_warning)) { ?>
            <div class="alert alert-danger"><?php echo $error_warning; ?></div>
        <?php } ?>                      

                <div class="row">
                    <div class="col-md-6">
                        <form action="<?php echo $import_action; ?>" method="post" enctype="multipart/form-data" id="form-import">
                            <div class="form-group">
                                <label for="file-import"><?php echo $text_upload_file; ?></label>
                                <input type="file" name="import_file" id="file-import" class="form-control" disabled>
                            </div>
                            <button type="submit" class="btn btn-primary" id="button-import" disabled><?php echo $button_import; ?></button>
                        </form>
                        <div id="import-report" style="margin-top: 20px;">
                            <!-- Отчет по операции импорта будет отображаться здесь -->
                        </div>
                    </div>

                    <div class="col-md-6">
                        <button id="button-backup" class="btn btn-default"><?php echo $button_backup; ?></button>
                        <button id="button-restore" class="btn btn-default"><?php echo $button_restore; ?></button>
                    </div>
                </div>
            </div>


$('#form-import').submit(function(e) {
                e.preventDefault(); // Предотвращаем стандартное поведение формы
                var formData = new FormData(this);

                $.ajax({
                    url: $(this).attr('action'),
                    type: 'post',
                    data: formData,
                    processData: false,
                    contentType: false,
                    dataType: 'json',
                    success: function(response) {
                        if (response.success) {
                            showAlert('Импорт файла успешно завершен!', 'success');
                        } else {
                            showAlert(response.error, 'danger');
                        }

                        // Update the import report
                        if (response.import_report) {
                            let reportHtml = '<div class="alert alert-warning"><ul>';
                            response.import_report.forEach(function(report) {
                                reportHtml += '<li>' + report + '</li>';
                            });
                            reportHtml += '</ul></div>';
                            $('#import-report').html(reportHtml);
                        }
                    },
                    error: function(response) {
                        showAlert('Неудача импорта файла!', 'danger');
                    }
                });
            });


в js на кнопку экспорта нет AJAX запроса
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
pickHabr
@pickHabr
Костыльных дел мастер
попробуй поменять button type="submit" на button type="button" и повесить событие не на $('#form-import').submit а на $('#button-import').click

перед этим можешь сразу проверить верстку на странице через инструменты разарботчика, что у тебя эти 2 формы действительно вписываются как 2 разные формы, а не херится верстка
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
19 июн. 2024, в 06:58
15000 руб./за проект
19 июн. 2024, в 01:11
7000 руб./за проект
18 июн. 2024, в 23:10
15000 руб./за проект