大家,早安。

因此,我一直在使用用于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.的更多详细说明,另请参见thisthis问题。

关于javascript - 使用ajax和bootbox的非法调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29211426/

10-09 09:14