Незаконный вызов с использованием ajax и bootbox
Доброе утро всем.
Так что я работал над этой системой, используя плагин bootbox для jquery, чтобы создать замечательную серию окон и форм, которые выполняют обработку и управление заказами и так далее. В этом конкретном случае у меня есть функция получения, которая по щелчку ссылки выбирает данные заказа, затем строит форму и отправляет ее обратно. Затем, когда я нажимаю кнопку отправить, он все равно должен обрабатываться, но в этом случае я получаю illegal invocation
ошибка. Я пробовал эту функцию как с ajax вне вызова bootbox, так и внутри обратного вызова под success
, Мне не повезло в обоих направлениях, поэтому я надеюсь, что кто-нибудь может помочь мне решить эту проблему.
Вот мой код ниже:
$('#new-inventory').on('click', '.receive', function(e){
e.preventDefault();
var id = $(this).data('id');
$.ajax({
url : 'assets/server/home/receive.php',
type : 'POST',
data : {id : id},
dataType : 'JSON',
success : function(data){
bootbox.dialog({
title : "Receive Tires",
className : 'receive-tires-window',
message : "<main class='row'>"+
"<section class='col-xs-12'>"+
data.message+
"</section>"+
"</main>",
buttons : {
success : {
label : 'Receive',
className : 'btn-success',
callback : function(){
e.preventDefault();
var formData = new FormData($('#rcvfrm')[0]);
$.ajax({ //error received right here
url : 'assets/server/home/process_receiving.php',
type : 'POST',
data : formData,
dataType : 'JSON',
success : function(data){
if(!data.errors){
bootbox.alert(data.message, function(){
location.reload();
});
}else{
bootbox.alert(data.message);
}
}
});
return false;
}
},
danger : {
label : 'Cancel',
className : 'btn-danger',
callback : function(){
}
}
}
});
$('.receive-tires-window').on('shown.bs.modal', function(){
$('.receive-tires-window #recv_date').datepicker();
});
}
});
});
1 ответ
Это связано с тем, что jQuery ajax автоматически пытается привести данные к строке, которая есть в необратимом объекте formadata.
Чтобы это исправить, вам нужно добавить эти два параметра во второй запрос:
processData: false,
contentType: false
Вы можете прочитать более подробное объяснение вариантов в документации. Смотрите также этот и этот вопросы.