大家,早安。
因此,我一直在使用用于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();
});
}
});
});
最佳答案
这是因为jQuery ajax会自动尝试将数据强制转换为字符串,而该字符串包含在不可强制的formadata对象中。
要解决此问题,您需要将这两个选项添加到第二个请求中:
processData: false,
contentType: false
您可以阅读有关选项on the documentation.的更多详细说明,另请参见this和this问题。
关于javascript - 使用ajax和bootbox的非法调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29211426/