2017-03-01 6 views
0

i einen Seitenaufruf/maessage.php
https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js "> TokenMismatchException in VerifyCsrfToken.php Linie 53

<script> 
    function getMessage(){ 
     $.ajax({ 
      type:'POST', 
      url:'/getmsg', 
      data:{'_token': '{{ csrf_token() }}'}, 
      success:function(data){ 
       $("#msg").html(data.msg); 
      } 
     }); 
    } 
    </script> 
    <body> 
    <div id = 'msg'>This message will be replaced using Ajax. 
    Click the button to replace the message.</div> 
    <?php 
    echo Form::button('Replace Message',['onClick'=>'getMessage()']); 
    ?> 
    </body> 

in routes.php

Route::get('/ajax',function(){ 
    return view('message'); 
}); 

Strecke :: Post ('/ getmsg', 'AjaxController @ Index');

in AjaxController.php

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 

class AjaxController extends Controller 
{ 
    public function index(){ 
    $msg = "This is a simple message."; 
    return response()->json(array('msg'=> $msg), 200); 
    } 
} 

wenn ich lief http://localhost:8000/ajax http://localhost:8000/getmsg unten Fehler erzeugen

Whoops, sieht aus wie etwas schief gelaufen ist.

1/1 MethodNotAllowedHttpException in RouteCollection.php Leitung 218: in RouteCollection.php Linie 218 und buch Fehler .....

, aber wenn ich in consol sah zeigen sie unter Fehler

TokenMismatchException VerifyCsrfToken.php in Leitung 53: VerifyCsrfToken.php in Linie 53

Ich kann Fehler nicht verstehen. Ich bin frischer in Laravel. und ich weiß eigentlich nicht die Bedeutung von '_token': '{{ csrf_token() }}' in message.php. pls. helfen, diesen Fehler zu lösen.

Antwort

0

Diese Ausnahme:

MethodNotAllowedHttpException

sagen Ihnen, dass das Verfahren auf dem Formular nicht das gleiche wie die Methode auf dem Weg ist.

Sie haben also 2 Möglichkeiten, um dieses Problem zu lösen.

Erste Option: Route ändern Methode Typ Ihre Route ein

GET hat
Route::get('/ajax',function(){ 
    return view('message'); 
}); 

aber Ihre Form hat eine POST

so, es zu ändern:

Route::post('/ajax',function(){ 
    return view('message'); 
}); 

Zweite Option: Ändern Sie den Ajax-Form-Methodentyp

Route::get('/ajax',function(){ 
    return view('message'); 
}); 


    <script> 
    function getMessage(){ 
     $.ajax({ 
      type:'GET', 
      url:'/getmsg', 
      data:{'_token': '{{ csrf_token() }}'}, 
      success:function(data){ 
       $("#msg").html(data.msg); 
      } 
     }); 
    } 
    </script> 

In Bezug auf Ihre Frage zu CSRF. Es schützt vor Cross Site Fälschung. Sie können darüber lesen: https://laravel.com/docs/5.4/csrf

+0

ya, ich habe diese Seite gelesen, aber ich kann nichts mehr bekommen. –

Verwandte Themen