Javascript &引用;您没有选择要上载的文件&引用;使用ajax上载图像时出现此错误

Javascript &引用;您没有选择要上载的文件&引用;使用ajax上载图像时出现此错误,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我正在使用CodeIgniter和jQueryAjax。我想用ajax上传图像。但它会显示一个错误,如您没有选择要上载的文件。 在这里,我编写了jQuery: jQuery(document).on('submit','signup_form',function() { //调试器; var data=jQuery(this).serialize(); jQuery.ajax({ 键入:“POST”, url:“”, 数据:数据, 成功:功能(数据) { jQuery(“.result”).h

我正在使用CodeIgniter和jQueryAjax。我想用ajax上传图像。但它会显示一个错误,如您没有选择要上载的文件。

在这里,我编写了jQuery:

jQuery(document).on('submit','signup_form',function()
{
//调试器;
var data=jQuery(this).serialize();
jQuery.ajax({
键入:“POST”,
url:“”,
数据:数据,
成功:功能(数据)
{
jQuery(“.result”).html(数据);
}
});
返回false;
});

上传照片
提交
试试这个:

$('#upload').on('click', function() {
        var file_data = $('#pic').prop('files')[0];
        var form_data = new FormData();
        form_data.append('file', file_data);

        $.ajax({
                url         : 'upload.php',     // point to server-side PHP script 
                dataType    : 'text',           // what to expect back from the PHP script, if anything
                cache       : false,
                contentType : false,
                processData : false,
                data        : form_data,                         
                type        : 'post',
                success     : function(output){
                    alert(output);              // display response from the PHP script, if any
                }
         });
         $('#pic').val('');                     /* Clear the file container */
    });
jQuery(document).on('submit', '#signup_form', function()
{
    //debugger;
    var data = new FormData($('#signup_form')[0]);

    jQuery.ajax({
        type : 'POST',
        url  : '<?php echo base_url()."front/ajax_register"; ?>',
        data : data,
        processData: false,
        contentType: false,
        success :  function(data)
        {
            jQuery(".result").html(data);
        }
    });
    return false;
});
Php:


这将上载文件

注意:根据CI方法更改代码

var data = jQuery(this).serialize();

指的是
文档

正如我所说,问题可能在于发送到后端的数据。如果您想提交带有输入文件的AJAX,请使用FormData

试试这个:

$('#upload').on('click', function() {
        var file_data = $('#pic').prop('files')[0];
        var form_data = new FormData();
        form_data.append('file', file_data);

        $.ajax({
                url         : 'upload.php',     // point to server-side PHP script 
                dataType    : 'text',           // what to expect back from the PHP script, if anything
                cache       : false,
                contentType : false,
                processData : false,
                data        : form_data,                         
                type        : 'post',
                success     : function(output){
                    alert(output);              // display response from the PHP script, if any
                }
         });
         $('#pic').val('');                     /* Clear the file container */
    });
jQuery(document).on('submit', '#signup_form', function()
{
    //debugger;
    var data = new FormData($('#signup_form')[0]);

    jQuery.ajax({
        type : 'POST',
        url  : '<?php echo base_url()."front/ajax_register"; ?>',
        data : data,
        processData: false,
        contentType: false,
        success :  function(data)
        {
            jQuery(".result").html(data);
        }
    });
    return false;
});
jQuery(document).on('submit','signup_form',function()
{
//调试器;
var数据=新表单数据($('signup_form')[0]);
jQuery.ajax({
键入:“POST”,
url:“”,
数据:数据,
processData:false,
contentType:false,
成功:功能(数据)
{
jQuery(“.result”).html(数据);
}
});
返回false;
});

问题就在这一行:
var data=jQuery(this.serialize()
,如果您序列化数据,正确选择的文件将丢失,并且不会随请求一起提交
“image”=>$upload['file\u name']
?@guest271314它将给出图像名称,以便我可以将其存储到数据库中。@Drkdra那么我应该写什么来代替
var data=jQuery(这个)连载‌​ze()改用FormData,如