Jquery AJAX запрос загружает данные два раза - PullRequest
0 голосов
/ 19 апреля 2020

Мой AJAX запрос загружает данные моей формы два раза в базу данных.

Это AJAX функция

function uploadProjects() {
  let projectName = $('#projectName').val();
  let description = $('#description').val();
  let estimatedTime = $('#estimatedTime').val();
  let actualTime = $('#actualTime').val();

  const formData = {
    projectName: projectName,
    description: description,
    estimatedTime: estimatedTime,
    actualTime: actualTime,
  };
  event.preventDefault();

  $.ajax({
    type: 'POST',
    url: 'http://localhost/WBS/php/api/objects/Project.php',
    data: formData,
    success: (response) => {
      console.log(`The data ${JSON.stringify(response)} has been uploaded`);
      $('#alert').fadeIn(() => {
        setTimeout(() => {
          $('#alert').fadeOut();
        }, 5000);
      });
    },
    error: (response) => {
      console.error(
        `Something went wrong uploading the data ${JSON.stringify(response)}`
      );
      $('#alertFailed').fadeIn(() => {
        setTimeout(() => {
          $('#alertFailed').fadeOut();
        }, 5000);
      });
    },
  });
}

Я называю эту функцию примерно так

$(document).ready(() => {
  $('#addProject').one('click', () => {
    uploadProjects();
  });
});

я вызываю функцию на этой html кнопке

<button id="addProject" form="js-projects" class="btn btn-success" type="submit"><i class="fa fa-angle-right" aria-hidden="true"></i> Add a project</button>

Проверка запроса POST в моем браузере (Firefox) я вижу, что запрос сделан только один раз на мой PHP файл, который загружает указанные данные.

После проверки базы данных данные были загружены два раза.

A: проблема возникла на сервере, два раза выполнялся мой запрос. глупый надзор за мной

1 Ответ

0 голосов
/ 19 апреля 2020

Измените на

$(function() => {
  $("#formID").on("submit",uploadProjects);
});

, а затем

function uploadProjects(e) {
  e.preventDefault();

  // if you do not want to submit again:
  $('#addProject').hide();

  let projectName = $('#projectName').val();
  .....
)

Если он все еще сохраняет два раза, значит, проблема в бэкэнде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...