通过ajax将输入文件类型传递给php无法正常工作

通过ajax将输入文件类型传递给php无法正常工作

问题描述:

I have this function to get values from a form

$("button[name='createimport']").click(function() {
var fd = new FormData();
var files = $('#xsfile')[0].files[0];
fd.append('file',files);

var batchid = $("input[name='batchid']").val();
var yrstart = $("input[name='yrstart']").val();
var yrend = $("input[name='yrend']").val();

$.ajax({
    url:"fetch_import.php",
    method:"POST",
    data: { batchid : batchid, yrstart: yrstart, yrend: yrend, fd},
    success: function (data) {
        //show success result div
        if(data)
        {
            showSuccess();
        }
        else
        {
            showFailure();
        }

    },
    error: function () {
        //show failure result div
        showFailure();
        }
}); 
});

and a php code like this:

enter code here$bcid =  $_POST['batchid'];
$yrs =  $_POST['yrstart'];
$yrg =  $_POST['yrend'];

/* Getting file name */
$filename = $_FILES['file']['name'];

/* Location */
$location = "upload/".$filename;
$FileType = pathinfo($location,PATHINFO_EXTENSION);
move_uploaded_file($_FILES['file']['tmp_name'],$location);

passing the file doesn't work. I've searched for this but still not working for me, i think i'll understand how it will work. Any idea? Tyia

我有这个函数从表单中获取值 p> blockquote >

  $(“button [name ='createimport']”)。click(function(){
var fd = new FormData(); 
var files = $('#xsfile'  )[0] .files [0]; 
fd.append('file',files); 
 
var batchid = $(“input [name ='batchid']”)。val(); 
var yrstart =  $(“input [name ='yrstart']”)。val(); 
var yrend = $(“input [name ='yrend']”)。val(); 
 
 $ .ajax({\  n url:“fetch_import.php”,
方法:“POST”,
 data:{batchid:batchid,yrstart:yrstart,yrend:yrend,fd},
 success:function(data){
 // 显示成功结果div 
 if(data)
 {
 showSuccess(); 
} 
 else 
 {
 showFailure(); 
} 
 
},
错误:function()  {
 // show failure result div 
 showFailure(); 
} 
}); 
}); 
  code>  pre> 
 
 

和这样的PHP代码: p> blockquote>

 在这里输入代码$ bcid =  $ _POST ['batchid']; 
 $ yrs = $ _POST ['yrstart']; 
 $ yrg = $ _POST ['yrend']; 
 
 / *获取文件名* / 
 $ filename =  $ _FILES ['file'] ['name']; 
 
 / * Location * / 
 $ location =“upload /".$ filename; 
 $ FileType = pathinfo($ location,PATHINFO_EXTENSION); 
move_uploaded_file  ($ _FILES ['file'] ['tmp_name'],$ location); 
  code>  pre> 
 
 

传递文件不起作用。 我已经搜索过这个,但仍然没有为我工作,我想我会理解它是如何工作的。 任何的想法? Tyia p> blockquote> div>

You should append your fields to fd and simply use that as data-parameter in $.ajax:

$("button[name='createimport']").click(function() {
    var fd = new FormData();
    var files = $('#xsfile')[0].files[0];
    fd.append('file',files);

    fd.append('batchid', $("input[name='batchid']").val());
    fd.append('yrstart', $("input[name='yrstart']").val());
    fd.append('yrend', $("input[name='yrend']").val());

    $.ajax({
        url:"fetch_import.php",
        method:"POST",
        data: fd,
        success: function (data) {
            //show success result div
            if(data)
            {
                showSuccess();
            }
            else
            {
                showFailure();
            }

        },
        error: function () {
            //show failure result div
            showFailure();
            }
    }); 
});