Laravel 5.2 Ajax“内部服务器错误”

时间:2016-07-06 21:19:55

标签: ajax laravel server internal

我可以做我想做的事!我尝试了所有1000个提示,但没有任何效果。 我总是得到“内部服务器错误”。 我想要的是调用MyController @ myurl

我的第1000个问题为什么我遇到“内部服务器错误”是:

routes.php文件:

Route::post( '/myurl', [
        'uses' => 'MyController@myurl',
        'as'   => 'myurl',
    ] );

my.blade.php:

<meta name="csrf-token" content="{{ csrf_token() }}">
<script>var url = "{{ URL::to('/myurl') }}";</script>

<script>
$( document ).ready( function () {
    callmyfunc();
    function callmyfunc() {
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
            $.ajax( {
                method: 'POST',
                url: url,
                dataType: "json",
                success: function ( feedback ) {
                }
            } );
        }
} );
</script>

1 个答案:

答案 0 :(得分:0)

一旦发送,令牌就不再有效。我只想让页面每隔10秒由ajax静默加载。因此,在调用myfunction之前,我必须使用另一个ajax函数手动重新生成一个新令牌。

// routes.php
Route::get( '/myurl', [
    'uses' => 'MyController@myurl',
    'as'   => 'myurl',
] );

Route::get('/refresh_csrf', function(){
    return csrf_token();
});


<!--  blade  -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<script>var url_toCall = "{{ URL::to('/myurl') }}";</script>
<script>var url_refresh = "{{ URL::to('/refresh_csrf') }}";</script>

<script>
    $( document ).ready( function () {
        setInterval( refreshToken, 10000  );
        setInterval( callMyFunction, 10000 );
        setInterval( refreshToken, 10000  );

        function callMyFunction() {
            $.ajaxSetup( {
                headers: {
                    'X-CSRF-TOKEN': $( 'meta[name="csrf-token"]' ).attr( 'content' )
                }
            } );
            $.ajax( {
                method: 'GET',
                url: url_toCall,
                dataType: "json",
                success: function ( feedback ) {
                }
            } );
        }
        function refreshToken() {
            $.ajaxSetup( {
                headers: {
                    'X-CSRF-TOKEN': $( 'meta[name="csrf-token"]' ).attr( 'content' )
                }
            } );
            $.ajax( {
                method: 'GET',
                url: url_refresh,
                dataType: "json",
                success: function ( feedback ) {
                    $( 'meta[name=csrf-token]' ).remove();
                    $( 'head' ).append( '<meta name="csrf-token" content="' + feedback + '">' );
                }
            } );
        }
    } );
</script>