2016-08-08 60 views
1

Ich versuche, Daten von Ajax zum Controller zu bekommen, aber es scheint, als ob Ajax keine Daten weitergibt.Laravel - kann Daten von Ajax zum Controller replizieren

Meta für Token:

<meta name="_token" content="{!! csrf_token() !!}" /> 

Javascript:

$.ajaxSetup({ 
    headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') } 
});  

// AJAX Call 

$.ajax({ 
    method: "POST", 
    url: "someurl", 
    data: JSON.stringify({'sample': 'test'}), 
    dataType: "json", 
    contentType: "application/json", 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function(err) { 
     console.log(err); 
    } 
}); 

Routen:

Route::post('/someurl', '[email protected]'); 

Controller:

public function updateUser() { 

    $myTest = Input::all(); 

    return response()->json(json_encode($myTest)); 
} 

ich den Controller ohne ein Problem nennen kann, aber wenn ich Input:all() hinzufügen, erhalte ich eine 500 server error. Bitte hilf mir, danke!

+0

Überprüfen Sie Ihre Server-Log, um weitere Informationen, in der Regel, wenn Sie sehen einen Fehler von 500, den Sie möchten. – SteD

+0

check by echo $ myTest oder print_r $ myTest ob sie irgendeinen Wert haben oder nicht? –

Antwort

0

Korrigieren Sie mich, wenn ich falsch liege, aber soweit ich weiß, funktioniert Input :: all() von Laravel Requests. Sie bearbeiten keine Anfrage, sondern reine rohe POST-Daten, also funktioniert Input :: all() nicht. Versuchen Sie, mit $myTest = $_POST['sample'] darauf zuzugreifen und sehen, ob das den Job erledigt. Ach ja, und für Ihre Bequemlichkeit, ich würde gehen für das folgende, wenn Sie Blade-Template-Engine verwenden:

$.ajax({ 
    method: "POST", 
    url: "someurl", 

    data: { 
     'sample': 'test', 
     '_token' : '{{csrf_token()}}' 
    }, 

    dataType: "json", 
    contentType: "application/json", 
    success: function(data) { 
    console.log(data); 
}, 
    error: function(err) { 
    console.log(err); 
} 
}); 

und lassen sich die ajaxsetup und csrf Feld