2016-08-03 19 views
0

Ich versuche, mein Kontaktformular mit ajax.Ich fügte csrf Token in einem Meta-Tag zu. Allerdings bin ich immer noch Fehler immer 500.Laravel Ajax Formular Einreichung csrf Token funktioniert nicht

auf Kopf

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

meine Laravel Route:

Route::post('/mail',[ 
'uses'=>'[email protected]', 
'as'=>'api.postContact' 

]);

Controller-Methode

public function postContact(Requests $request) 
{ 

    if(Request::ajax()) { 
     $data = $request::all(); 
     return response()->json([ 
      'data'=>$data 
     ]); 
    } 

    //$contact = new ContactModel($sub, $sender, $email, $body); 
    //ignore the fact that i am not properly utilizing variables as i am testing. 
} 

Ajax-Aufruf

$.ajaxSetup({ 
     header:$('meta[name="csrf-token"]').attr('content') 
    }); 
    $.ajax({ 
     url:'http://abounde.com/mail', 
     type:'POST', 
     dataType:'json', 
     data:$(this).serialize(), 
     success:function(data){ 
      if(data){ 
        console.log('submitted ');      
      }else{ 
      //default bg 
        console.log('problem submission '); 

      } 

     }, 
     error: function(data){ 
       console.log(data); 
     } 
    }); 

Fehler: enter image description here

+0

@ RolfPedroErnst das Laravel in der Klasse eingebaut ist, um JSON Antwort zurückzugeben –

+0

Mögliche duplica te von [Laravel csrf Token Mismatch für Ajax POST-Anfrage] (http://stackoverflow.com/questions/32738763/laravel-csrf-token-mismatch-for-ajax-post-request) – Danh

+0

Fehler 500 ist in der Regel kein Zeichen, dass Authentifizierung schlägt fehl, es ist eher ein Zeichen für einen Codefehler, der den Server zum Stillstand bringt. Hast du den ResponseText angeschaut? – Kjell

Antwort

0

das Problem ist, dass Sie Ihre Token nicht vorbei korrekt sind. In Blade-js Variable

var token = '{{Session::token()}}'; 
or 
var token = '{{csrf_token()}}'; 

Sie müssen erstellen auf auch Ihre Route

var YOURROUTE = '{{Route("routename")}}'; 

Dann in Ihrem app.js etwas tun:

$.ajax({ 
    method:"post", 
    url:YOURROUTE, 
    data:{ 
    _token:token, //this is very important 
    some_data:some_data, 
    next_data:next_data 
    } 
    }).done(function(msg) { 
    console.log('Your response'+msg); 
    });