2016-04-18 23 views
0

Ich versuche, eine Reihe von Daten einschließlich Bilddatei über Ajax mit Formdata senden, aber wenn ich auf diese Daten in Laravel-Controller zugreifen möchte, zeigt es ein leeres Array.Wie bekomme ich formdata Werte gesendet von Ajax Post-Methode in Laravel-Controller

Hier ist meine Ajax-Code -

var fd = new FormData(); 
    fd.append("photo",files[0]); 
    fd.append("user_id",localStorage.getItem('userId')); 
    fd.append("doctype","dl_image");  
    console.log(fd); 



    //ajax code 
    $http.post('uploadfile', fd, {  
      withCredentials: true,  
      headers: { 'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content') }  
    }).success(function(data, status) {   

       console.log(data); 


    }); 

PHP-Code -

$data = Request::all(); 
    $photo = Request::file('photo'); 
    $userid = Request::get('user_id'); 
    $doctype = Request::get('doctype'); 


    $postData = array(
     'photo' => $photo, 
     'user_id' => $userid, 
     'doctype' => $doctype 
    ); 
    var_dump($data); 
    die(); 

Wenn die Daten in Browser-Konsole abgeladen wird, zeigt es

array(0) { 
} 

Hilfe nötig.

Antwort

0

Bitte versuchen Sie Serialisierung Methode von Jquery.

function myForm(form){ 
    var formData = $(form).serialize(); 
    att=form.attr("action") ; 
    $.post(att, formData).done(function(data){ 
     alert(data); 
    }); 
    return true; 
} 
+0

Ich verwende AngularJS – sajalsuraj

1

AngularJS sendet POST-Requests mit application/json Typ & JSON Körper standardmäßig.
Deshalb denke ich, dass Sie verwenden müssen:

headers: { 'Content-Type' : 'application/x-www-form-urlencoded'}, 
data: $.param(data) 

in ajax Code.
Sie könnte so etwas wie $name = Input::get('name'); statt $userid = Request::get('user_id');

+0

Wie Datei zu akzeptieren .. ?? @Ajay – sajalsuraj

+0

Datei akzeptieren? Ich habe dich nicht verstanden –

0

Bei Verwendung der FormData API das Versenden von Dateien und Daten verwenden müssen, ist es wichtig, die Content-Type header-undefined einzustellen.

Versuchen: headers: { 'Content-Type': undefined }