2

When I tried to use ajax in laravel it shows the following error,

{ "message": "", "exception": "Symfony\Component\HttpKernel\Exception\HttpException", "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php", "line": 203, "trace": [ { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php", "line": 175, "function": "prepareException", "class": "Illuminate\Foundation\Exceptions\Handler", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\app\Exceptions\Handler.php", "line": 49, "function": "render", "class": "Illuminate\Foundation\Exceptions\Handler", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 83, "function": "render", "class": "App\Exceptions\Handler", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 55, "function": "handleException", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php", "line": 49, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 151, "function": "handle", "class": "Illuminate\View\Middleware\ShareErrorsFromSession", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 53, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php", "line": 63, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 151, "function": "handle", "class": "Illuminate\Session\Middleware\StartSession", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 53, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php", "line": 37, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 151, "function": "handle", "class": "Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 53, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php", "line": 59, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 151, "function": "handle", "class": "Illuminate\Cookie\Middleware\EncryptCookies", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 53, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 104, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Router.php", "line": 667, "function": "then", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Router.php", "line": 642, "function": "runRouteWithinStack", "class": "Illuminate\Routing\Router", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Router.php", "line": 608, "function": "runRoute", "class": "Illuminate\Routing\Router", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Router.php", "line": 597, "function": "dispatchToRoute", "class": "Illuminate\Routing\Router", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php", "line": 176, "function": "dispatch", "class": "Illuminate\Routing\Router", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 30, "function": "Illuminate\Foundation\Http\{closure}", "class": "Illuminate\Foundation\Http\Kernel", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\fideloper\proxy\src\TrustProxies.php", "line": 57, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 151, "function": "handle", "class": "Fideloper\Proxy\TrustProxies", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 53, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php", "line": 31, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 151, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\TransformsRequest", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 53, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php", "line": 31, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 151, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\TransformsRequest", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 53, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php", "line": 27, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 151, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\ValidatePostSize", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 53, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php", "line": 62, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 151, "function": "handle", "class": "Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php", "line": 53, "function": "Illuminate\Pipeline\{closure}", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php", "line": 104, "function": "Illuminate\Routing\{closure}", "class": "Illuminate\Routing\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php", "line": 151, "function": "then", "class": "Illuminate\Pipeline\Pipeline", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php", "line": 116, "function": "sendRequestThroughRouter", "class": "Illuminate\Foundation\Http\Kernel", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\public\index.php", "line": 55, "function": "handle", "class": "Illuminate\Foundation\Http\Kernel", "type": "->" }, { "file": "C:\xampp\htdocs\TravelAssistant\server.php", "line": 21, "function": "require_once" } ] }

My controller code is,

public function getPublicAttraction(Request $request)
    {
        return response(['msg'=>'success']);
    }

The ajax call,

<script>
    function getAttraction()
    {

        var pass= {'_token':$('meta[name="csrf-token"]').attr('content')

    };
    $.ajax({
            type:'POST',
            url:'{{route("Attractions")}}',
            datatype:'json',
            data: pass,
            success:function(data){
                $("#public_attractions").html(data.msg);
            }
        }).fail(function(jqXHR, textStatus, error){
            $("#public_attractions").html(jqXHR.responseText);
        });


    }
    $(document).ready(function(){
         getAttraction();
    });
</script>

meta tag with csrf token,

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

the route file web.php entry,

Route::post('/getAttractions','AjaxController@getPublicAttraction')->name('Attractions');

I think I am stuck, please help.

2 Answers2

0

Why you reinvent something which is working fine.

1st Token in blade should look like this: (you have additional !! for what ever reason)

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

2nd Put this code somewhere in the master blade:

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

Source https://laravel.com/docs/5.7/csrf#csrf-x-csrf-token

Jevgenij Dmitrijev
  • 2,228
  • 1
  • 15
  • 23
0

Ok, everything looks fine except the way that the CSRF meta tag, Because you don't need to escape anything in the csrf token, so the correct way to print the token will be: <!-- CSRF Token --> <meta name="csrf-token" content="{{ csrf_token() }}"> This is the best guess i cant give you, because you do not provide what are the HTTP status of the response, neither which situation the exception is thrown, The exception message is also empty so ..

Diego Meza
  • 197
  • 1
  • 10
  • Initially it was like that and generating the same error – Raymond Thomas Oct 13 '18 at 03:31
  • Ok, but , what is the HTTP status of the response?, could be an 401 (Unauthorized) becouse the "Attractions" route is protected with the "auth" middleware or could be a 500,with a sintax error , or a 419 that could be because is something wrong with the csrf token. – Diego Meza Oct 15 '18 at 14:48
  • 1.-Check that the route is not protected with any middleware, 2.-Check what is the Http status of the response (In the developer tools of the browser if you are using the browser). 3.-Check if all the request params are really sent with the request (Browser->Developer tools -> Network). Is so much easier if we know the HTTP status , thats says whats is going on in the server side. – Diego Meza Oct 15 '18 at 14:56