2017-04-10 2 views
1

Ich versuche, zwei Variablen FavorisController zu senden: {{ Auth::user()->id }} und die id, die ich in der URL habenLaravel Pass Daten durch Ajax zum Controller

Dies ist, was ich versucht habe bisher

Route:

Route::get('annonce_test/{id}','[email protected]'); 

Meine ajax-Skript

$(document).ready(function() { 
    $('.favoris').click(function(){     
     var id_user = "{{ Auth::user()->id }}" ; 
     $.ajax({ 
      url: 'annonce_test/{id}', 
      type: 'GET',    
      data: {id: 1, id_user: $id_user}, 
      success: function(data){ 
       alert(Ajouter au Favoris avec succes); 
      }, 
      error: function(){}, 
     });"" 
    });   
}); 

FavorisController

public function create(Requests $request) 
{ 
    $id_annonce = $_GET['id']; 
    $id_user = $_GET['id_user']; 
    $query = DB::table('annonce_residentiel_user') 
    ->insertGetId(
     array('annonce_residentiel_id' => $id_annonce , 'user_id' => $id_user) 
     ); 
} 

ich den Fehler hätte versucht, Eigentum von Nicht-Objekt zu erhalten {{ Auth::user()->id }}

Aber ist dies der richtige Weg, es zu tun? Ich meine, wenn ich ein anderes Skript zum Löschen habe, sollte ich die URL in meinem Ajax-Skript ändern.

+1

Ist der Benutzer angemeldet? Wenn nicht, gibt es keine ID. Außerdem haben Sie die URL in Ihrem Ajax falsch. Sie müssen id_user an die URL anhängen, anstatt '{id}' – aynber

+0

zu verwenden. Sie müssen auch das CSRF-Token übergeben. [Dokumente] (https://laravel.com/docs/5.4/csrf) dsadnick

+0

Oh du bist gerade jetzt kann ich auf die Seite zugreifen. Aber es führt nicht den Ajax-Code Ich versuchte eine Warnung, aber nichts zeigt –

Antwort

1

Verschieben Auth::user() Teil von JS Skript zu PHP:

->insertGetId(['annonce_residentiel_id' => $id_annonce , 'user_id' => auth()->user()->id]); 

Stellen Sie außerdem sicher, dass Benutzer wie mit etwas authentifiziert:

if (auth()->check()) { 
    // Do stuff. 
} 
+0

Das ist richtig Ich denke, ich habe den Fehler in meinem Ajax-Code: Datenattribut –

0

Basierend auf Ihrer Route Definition $ id ist das Argument für die Methode erstellen und um mehr Daten aus dem Ajax-Aufruf zu erhalten, sollten Sie Input :: get verwenden. Die Route wird auch nur aktiviert, wenn die URL im Ajax-Aufruf das Format ex: annonce_test/25 hat. Überprüfen Sie das Update auf den Ajax-Anruf.

Route:

Route::get('annonce_test/{id}','[email protected]'); 

Ajax-Aufruf:

 $(document).ready(function() { 
    $('.favoris').click(function(){     
     var id_user = "{{ Auth::user()->id }}" ; 
     $.ajax({ 
      url: 'annonce_test/'+id_user, 
      type: 'GET', 
      data: {id: 1}, 
      success: function(data){ 
       alert(Ajouter au Favoris avec success); 
      }, 
      error: function(){}, 
     }); 
    });   
    }); 

FavorisController:

public function create($id) 
    { 
     $id_annonce = Input::get['id']; 
     $query = DB::table('annonce_residentiel_user')->insertGetId(
      array('annonce_residentiel_id' => $id_annonce , 'user_id' => $id)); 
    }