通过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();
}
});
});