【问题标题】:Laravel 5.2 Ajax "Internal Server Error"Laravel 5.2 Ajax“内部服务器错误”
【发布时间】:2016-07-06 21:19:55
【问题描述】:

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

我收到“内部服务器错误”的第 1000 个问题是:

routes.php:

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

我的.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>

【问题讨论】:

  • storage/logs/laravel.log 中有什么内容?一个 500 错误应该在那里输入一个条目。
  • 尝试将错误回调添加到 ajax,这样您就可以输出任何错误。错误:function (xhr, opts, showError) {console.log(xhr);console.log(showError);这可能会让您更好地了解为什么,您也没有发送任何数据?然后如果可能发布错误,似乎它可能不仅仅是上面的代码
  • 你试过直接从浏览器访问/myurl吗?
  • 放弃 header 并尝试将 csrf 添加到数据中......等等 - POST 请求的数据在哪里?
  • 详情请见Browser Dev tools &gt; Network (your request) &gt; preview (tab)

标签: ajax laravel server internal


【解决方案1】:

一旦发送,令牌就不再有效。我只是希望每 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>

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2016-06-19
    • 2016-07-10
    • 2017-04-12
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2018-04-16
    • 2016-03-24
    相关资源
    最近更新 更多