2016-05-31 8 views
0

Ich verwende das Plugin datatable, um eine Liste der Benutzer anzuzeigen. In dieser Liste muss ich neue Dateien hochladen können.jQuery - DataTables Upload-Datei mit Ajax

Ich versuche mit Ajax zu versuchen, Daten an PHP zu senden. Wenn ich Wert sende, gibt es kein Problem, mein PHP-Skript funktioniert jedoch, ich kann die Daten nicht aus den Dateien abrufen.

Um die Dateien hochzuladen verwende ich das gleiche Skript, das ich für ein anderes Projekt geschrieben habe, das funktioniert, also denke ich, hier ist das Problem DataTable, die meine Formulardaten nicht erkennen.

Weiß jemand, wie man das erreicht?

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

In der jsFiddle gibt es kein 'form'-Tag. –

+0

Ja es gibt .. kurz vor dem Eingang – SNos

+0

Du hast recht, sorry. Siehe [diese Antwort] (http://stackoverflow.com/questions/28872872/error-in-sending-form-file-with-form-using-ajax). Versuchen Sie 'var data = new FormData(); data.append ('file', $ ('input [type = file]', form) [0] .files [0]); –

Antwort

0

Ihre ändern JQuery-Code:

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); 
    } 

}); 

Ihre Frage erklärt here

+0

Danke .. das funktioniert Der PHP empfängt jedoch nur die Daten aus der ersten Zeile. Wenn ich ein Bild in anderen Zeilen auswähle, werden die empfangenen Daten immer von der ersten Zeile in der Tabelle – SNos

+1

@SNos übernommen. Verwenden Sie '$ (this) .closes (" form "). Get (0)' anstelle von '$ ('form') .get (0) '. –

+0

Vielen Dank .. Es funktioniert jetzt richtig – SNos