2016-05-31 133 views
0

我正在使用插件datatable来显示用户列表。在这个列表中,我需要能够上传新文件。jQuery - 使用ajax的DataTables上传文件

我想使用ajax尝试发送数据到php。如果我发送值没有问题,但我的PHP脚本工作,我无法从文件中获取数据。

为了上传文件,我使用了我为另一个工作正常的脚本编写的脚本,所以我认为这里的问题是DataTable,它不能识别我的表单数据。

任何人都知道如何做到这一点?

FIDDLE

JS

$('#example .fileinput-upload-button').on('click', function(event) { 

    var td = $(this).closest("td"); 
    var parentTD = td.parent(); 

    var form = $(this).closest("form"); 
var url = "example/upload.php?type=photo" 
    var data = new FormData(form); 
    alert(form); 

    $.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    mimeType: "multipart/form-data", 
    contentType: false, 
    cache: false, 
    dataType: "html", 
    processData: false, 
    success: function(data) { 

     alert(data); 
    } 
    }); 

PHP

$type = filter_input(INPUT_GET, "type"); 


$target_dir_header = $includesDir . "dashboard/resources/header_pic/"; 
$dataHeader = $_FILES['input7']; 
$dataHeader_ext = explode('/', $dataHeader['type']); 
$imageFileType_header = $dataHeader_ext[1]; 
$target_file_header = $target_dir_header . basename("header" . $imageFileType_header); 


echo $type . " - " . $imageFileType_header; 
+0

jsFiddle中没有'form'标签。 –

+0

是的,只是在输入前 – SNos

+0

你是对的,对不起。见[这个答案](http://stackoverflow.com/questions/28872872/error-in-sending-form-file-with-form-using-ajax)。尝试'var data = new FormData(); data.append('file',$('input [type = file]',form)[0] .files [0]);'而不是。 –

回答

0

jQuery代码更改为:

var td = $(this).closest("td"); 
var parentTD = td.parent(); 

var url = "example/upload.php?type=photo" 
var form = $(this).closest("form").get(0); 

    $.ajax({ 
    type: "POST", 
    url: url, 
    data: new FormData(form), 
    mimeType: "multipart/form-data", 
    contentType: false, 
    cache: false, 
    dataType: "html", 
    processData: false, 
    success: function(data) { 
    alert(data); 
    } 

}); 

你的问题解释here

+0

谢谢..这是工作然而,php正在接收来自第一行的数据。如果我在其他行上选择一张图片,收到的数据总是从表 – SNos

+1

@SNos中的第一行开始,使用'$(this).closest(“form”)。get(0)'而不是'$('form' )获得(0)'。 –

+0

非常感谢你。现在它工作正常 – SNos