2016-03-22 4 views
4

Hallo StackOverflow-Familie. Dies ist meine allererste Frage und ich hoffe, Hilfe zu bekommen.Wie Daten von AJAX zu Laravel 5.2 Controller über Post-Methode übergeben

Ich bin neu bei Laravel Framework und verwende Version 5.2 in meinem Projekt. Ich versuche, Daten mit der Post-Methode von meiner Ajax-Funktion zu einer bestimmten Controller-Methode zu übergeben, aber keine Daten an den Controller übergeben.

Ich befolgte die Schritte in diesem Forum https://laracasts.com/discuss/channels/laravel/process-data-in-controller-using-ajax-in-laravel, aber es kann nicht funktionieren. Hier ist, was ich bisher gemacht habe.

Mein JavaScript (post_script.js):

$.ajax({ 
    method: 'POST', 
    url: './home', 
    data: { 
     userID: 76, 
     userName: 'Jimmy' 
    }, 
}); 

Beachten Sie, dass diese Datei im Verzeichnis assets/js in der Laravel Struktur gespeichert wird. Hier ist, was ich in meiner Route Datei (routes.php):

Route::get('/', "[email protected]"); 
Route::get('home', "[email protected]"); 

Hier ist die Funktion, die ich in MyController.php Datei:

function home(Request $request) { 
    $userID = $request['userID']; 
    $userName = $request['userName']; 
    return view('home', [ 
     'userID'=> $userID, 
     'userName' => $userName 
    ]); 
} 

Aus meiner Sicht habe ich versucht, es wie folgt zugreifen:

<p>User ID: {{$userID}}</p> 
<p>User Name: {{$username}}</p> 

Nichts wird angezeigt! Bitte was mache ich falsch? Ich brauche deine Hilfe. Verzeihen Sie mir, wenn meine Frage nicht richtig ist, aber ich hoffe, Sie bekommen, was ich meine. Danke

+0

konnten Sie verwenden können, um passieren bestätigen, dass die Daten tatsächlich auf der gewünschten Route gebucht wird ? Welchen HTTP-Antwortcode erhalten Sie beispielsweise in Ihrer Browser-Konsole, wenn Sie die Daten bereitstellen? Haben Sie versucht, den Inhalt von '$ request' direkt in Ihrem Controller zu speichern? – alexw

Antwort

8

Ihre AJAX-Posting, aber Sie haben keine Set POST Route, nur GET. Fügen Sie eine POST-Route, etwa so:

Route::post('home', "[email protected]"); 
0

Zuerst müssen Sie Datentyp für Ajax-Anforderung wie folgt aufgebaut (wenn Sie jQuery verwenden) versuchen

$.ajax({ 
    method: 'POST', 
    url: './home', 
    dataType: 'json' 
    data: { 
     userID: 76, 
     userName: 'Jimmy' 
    }, 
}) 

dann in Ihren Controller verwenden als

Request::json() 

folgen und sehen, führen

Sie können auch Input :: get() verwenden:

Request::get('userID') 
3

Überprüfen Sie zuerst mit Ihrem Entwickler/Netzwerk-Tool (z. B. firebug) ob Ihr Ajax-Ruf die gewünschten Controller/Funktionen erreicht und die Parameter korrekt weitergeleitet werden.

Ein sicherer Weg URL in der Ajax-Aufruf in der Laravel Umgebung angeben, wird unter Verwendung der URL Fassade wie folgt aus:

url: "{{ URL::to('home'); }}", 

Um es so zu tun, aber Sie Ihre js als myscript speichern müssen. blade.php (!!) Datei und @include es entsprechend in Ihre Ansicht.

Für den Empfang Ihrer geposteten Parameter in der Controller-Funktion müssen keine Funktionsargumente deklariert werden, Sie können einfach die Funktion Input :: Get() verwenden, z. dies wie:

public function home() 
{ 
    $userID = Input::Get('userID'); 
    $userName = Input::Get('userName'); 
    return view('home', [ 'userID'=> $userID, 'userName' => $userName ]); 
} 
1

Wenn Sie versuchen, POST zu tun, bitten Sie X-CSRF-Token haben müssen.

Fügen Sie diese auf meta:

<meta name="csrf-token" content="{{ csrf_token() }}"> 

Und Einrichtung Ihrer AJAX:

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

In Laravel docs: https://laravel.com/docs/5.2/routing#csrf-x-csrf-token

0

Sie Routennamen Ihre Daten an die Steuerung

$.ajaxSetup({ 
      headers:{'X-CSRF-TOKEN': $("meta[name='csrf-token']").attr('content')} 
     }); 
     $.ajax({ 
      type:'POST', 
      url: '{{route("route_name_with_post_method")}}', 
      data:{ 
       'id': data 
      }, 
      success:function(r){ 

      },error:function(r) { 

      } 
     }); 
Verwandte Themen