大家早上好。
所以我一直在使用jquery的bootbox插件来处理这个系统,以制作一系列精美的窗口和表单,用于处理和管理等等。在这种特殊情况下,我有一个接收函数,点击链接后,获取订单数据,然后构建一个表单并发回该表单。然后,当我单击提交时,它仍应处理,但在这种情况下,我收到illegal invocation
错误。我已经在bootbox调用之外的ajax和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();
});
}
});
});
答案 0 :(得分:1)
这是因为jQuery ajax会自动尝试将数据强制转换为字符串,而这个字符串位于不可合并的formadata对象中。
要解决此问题,您需要将这两个选项添加到第二个请求中:
processData: false,
contentType: false
您可以阅读有关选项的更详细说明on the documentation.另请参阅this和this个问题。