Как объединить два js ajax скрипта которые отправляють данные на сервер
на сайте есть форма с некоторыми полями и input для отправки файла на сервер, все данные на сервер отправляются аяксом (в фоне), если пользователь отправляет только форму с полями то проблем нет, но если пользователь отправляет на сервер и форму и файл то возникает проблема, дело в том что инициируются два запроса т.е. мой скрипт обращается к серверу дважды, а это меня не устраивает (я не могу нормально сформировать электронное письмо), так вот, как мне объединить эти два скрипта. Заранее спасибо
Первый скрипт (отправка формы):
$.ajax({
type: 'POST',
cache: false,
dataType: 'json',
url: 'act.php',
data: {
operation: operation,
value_php_1: date_1,
value_php_2: date_2,
value_php_3: date_3,
value_php_4: value_1,
value_php_5: value_2,
value_php_6: value_3,
value_php_7: value_4
},
success: function(data) {
console.log(data.result);
document.getElementById('modal_preload').style.display='none';
},
error: function (jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Что-то пошло не так, пожалуйста обновите страницу и попробуйте еще раз');
} else if (jqXHR.status == 404) {
alert('Что-то пошло не так, пожалуйста обновите страницу и попробуйте еще раз');
} else if (jqXHR.status == 500) {
alert('Что-то пошло не так, пожалуйста обновите страницу и попробуйте еще раз');
} else if (exception === 'parsererror') {
alert('Что-то пошло не так, пожалуйста обновите страницу и попробуйте еще раз');
} else if (exception === 'timeout') {
alert('Что-то пошло не так, пожалуйста обновите страницу и попробуйте еще раз');
} else if (exception === 'abort') {
alert('Что-то пошло не так, пожалуйста обновите страницу и попробуйте еще раз');
} else {
alert('Что-то пошло не так, пожалуйста обновите страницу и попробуйте еще раз');
}
}
});
Второй скрипт (отправка файла):
if (window.FormData === undefined) {
alert('В вашем браузере FormData не поддерживается')
} else {
var formData = new FormData();
formData.append('file', $("#js-file")[0].files[0]);
$.ajax({
type: "POST",
url: 'act.php',
cache: false,
contentType: false,
processData: false,
data: formData,
dataType : 'json',
success: function(msg){
if (msg.error == '') {
$("#js-file").hide();
$('#result').html(msg.success);
} else {
$('#result').html(msg.error);
}
}
});
}
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Во втором фрагменте добавьте в formData все остальные данные.
var formData = new FormData();
formData.append('file', $("#js-file")[0].files[0]);
formData.append('operation', operation);
formData.append('value_php_1', date_1);
...