如何在BootBox上通过Ajax在PHP上传图像?

问题描述 投票:1回答:1

我正在尝试使用ajax上传图像,但我不知道为什么我无法实现这一点,我已经看到了很多例子,我也没有在控制台的formData中获取ant数据。提前致谢。

这是我的JS代码:

$(document).on('click', '#btnInsertWorkingHours', function() {
    var $html='';
    $html += '<form id="newWorkingHours" class="js-exampleForm" action="" method="post" enctype="multipart/form-data">';
    $html += '<div class="panel-body">';
    $html += '<fieldset>';
    $html += '<div class="col-md-12">';
    $html += '<div class="row small">';
    $html += '<div class="col-sm-6 form-group">';
    $html += '<label><span class="required">*</span>&nbsp;Hours</label>';
    $html += '<input type="text" id="wh_hours" name="wh_hours" value="" autocomplete="off" class="form-control fPInteger"/>';
    $html += '</div>';
    $html += '<div class="col-sm-6 form-group">';
    $html += '<label><span class="required">*</span>&nbsp;Minutes</label>';
    $html += '<input type="text" id="wh_minutes" name="wh_minutes" value="" autocomplete="off" class="form-control fPInteger"/>';
    $html += '</div>';
    $html += '</div>';
    $html += '<div class="row small">';
    $html += '<div class="col-md-12 form-group">';
    $html += '<label><span class="required">*</span>&nbsp;Description</label>';
    $html += '<textarea id="wh_description" name="wh_description"  class="form-control wh_description"></textarea>';
    $html += '</div>';
    $html += '</div>';
    $html += '<div class="row small">';
    $html += '<div class="col-md-6 form-group">';
    $html += '<label><span class="required">*</span>&nbsp;Document</label>';
    $html += '<input type="file" class="form-control-file" id="wh_document" name="wh_document"/>';
    $html += '</div>';
    $html += '</div>';
    $html += '</div>';
    $html += '</fieldset>';
    $html += '</div>';
    $html += '</form>';

    var $box = bootbox.dialog({
    closeButton: false,
        message: $html,
        title: 'Add Working Hours',
        buttons: {
            success: {
                label: 'Save',
                className: "btn-success",
                callback: function() {

                    var $valid = jQuery('#newWorkingHours').valid();
                    var $form = $('#newWorkingHours');
                    var formData = new FormData($form);
                    console.log(formData); //NOT GETTING ANYTHING IN formData

                    if($valid) {
                        jQuery.ajax({
                            url: $UrlInsertWorkingHours,
                            dataType: 'json',
                            type: 'post',
                            data: formData,
                            enctype:'multipart/form-data',
                            cache:false,
                            contentType: false,
                            processData: false,
                            beforeSend: function() {
                                $('.bootbox .btn').prop('disabled',true);
                                $('.bootbox .btn-success').prepend('<span class="loader"><i class="fa fa-spinner fa-spin"></i></span>')
                            },
                            complete: function() {
                                jQuery('.wait').remove();
                                $box.modal('hide').destroy();
                            },
                            success: function(json) {

                            },
                            error: function(xhr, ajaxOptions, thrownError) {
                                console.log(xhr.responseText);
                            }
                        });
                    }
                    return false;
                }
            },
            danger: {
                label: 'Cancel',
                className: "btn-default"
            }
        }
    })

    $($box).find(function() {
        $('input[type="checkbox"].square').iCheck({
            checkboxClass: 'icheckbox_square-green',
            increaseArea: '20%'
        });
        $('.iCheck-Green').iCheck({
            checkboxClass: 'icheckbox_square-green',
            radioClass: 'iradio_square-green',
            increaseArea: '20%'
        });
    });
});
javascript php ajax image-uploading image-upload
1个回答
0
投票

您可以使用FormData()形成此目的。你可以像这样保存你的file/image输入

var file_data = jQuery('#image_input').prop('files')[0];
var form_data = new FormData();
form_data.append('image_input', file_data);

例如,如果您还想向此添加非文件输入,则为了附加更多值。

var any_input_text = jQuery("#any_input_text").val();
form_data.append('ny_input_text', ny_input_text);

将它传递给ajax时你可以这样做

data: form_data

在php端,你可以像平常一样访问文件元素

© www.soinside.com 2019 - 2024. All rights reserved.