简体   繁体   English

带有Laravel的Ajax无法正常工作

[英]Ajax with Laravel not working

I am using Laravel and I am trying to store information in my database using AJAX but I am getting this error. 我正在使用Laravel,并且尝试使用AJAX将信息存储在数据库中,但出现此错误。

dev.js:4 POST http://127.0.0.1:8000/developer/work-links/addLink 419 (unknown status)

I have tried so many times but either I get this 419error or 500 error. 我已经尝试了很多次,但是却遇到了419错误或500错误。

Here are my Routes 这是我的路线

Route::group(['middleware'=>'developer', 'web'], function () {

    Route::get('developer', 'DeveloperController@index')->name('developer');

    Route::get('developer/work-progress', 'DeveloperController@progress')->name('progress');

    Route::get('developer/work-links', 'DeveloperController@projectLinks')->name('projectLinks');

    Route::post('developer/work-links/addLink','DeveloperController@addLink');


});

Here is DeveloperController 这是DeveloperController

public function addLink(Request $request) {

            $data = new ProjectLink();

            $data->order_id = $request->order_id;
            $data->link_title = $request->link_title;
            $data->link_description = $request->link_description;
            $data->link = $request->link;

            $data->save();

            return response()->json($data);


    }

Here is the Blade File 这是刀片文件

@section('content')

    <div class="row">

        <div class="col-sm-6">

            <div class="card-box">

                <div class="form-group">
                    <input class="form-control" type="text" name="link_title" placeholder="title">
                </div>

                <div class="form-group">
                    <input class="form-control" type="text" name="link" placeholder="link">
                </div>

                <div class="form-group">
                    <textarea class="form-control" name="link_description" id="" cols="30" rows="10"></textarea>
                </div>

                <div class="form-group">
                    <input type="hidden" name="order_id" value="{{$order->id}}">
                </div>

                <div class="form-group">
                    <button type="submit" class="btn btn-primary" id="addLink">Create Link</button>
                </div>

            </div>

        </div>

        <div class="col-sm-5 offset-1">


            <div class="card-box ribbon-box">
                <div class="ribbon ribbon-primary">Your Work Links</div>
                <div class="clearfix"></div>
                <div class="inbox-widget">
                    {{--<a href="#">--}}

                    @if(count($links) != 0)
                        @foreach($links as $link)
                            <div>
                                <h4 >{{$link->link_title}}</h4>
                                <p id="add_here"></p>
                                <p class="inbox-item-text">{{$link->link_description}}</p>
                                <p class="inbox-item-date">
                                    <a href="{{$link->link}}" target="_blank">
                                        <button type="button" class="btn btn-icon btn-sm waves-effect waves-light btn-success "> Click Me </button>
                                    </a>
                                </p>
                            </div>
                            {{--</a>--}}
                        @endforeach

                    @else
                        <div class="inbox-item">
                            <h1 class="display-4 text-muted" style="padding-top: inherit">No Links For Now</h1>
                        </div>
                    @endif
                </div>
            </div>


        </div>

    </div>

@stop

And I have also Included this meta tag in the head section 而且我还在头部添加了这个meta标签

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

Here is the AJAX Script 这是AJAX脚本

  <script type="text/javascript">
        var token = $('meta[name="csrf-token"]').attr('content');

            $("#addLink").click(function () {

                $.ajax({

                    type: 'POST',
                    url: 'work-links/addLink',
                    dataType: 'json',
                    data: {

                        'link_title': $('input[name=link_title]').val(),
                        'link_description': $('textarea[name=link_description]').val(),
                        'link': $('input[name=link]').val(),
                        'order_id': $('input[name=order_id]').val(),

                    },
                    header: {"X-CSRF-Token": token},

                    success: function(data) {
                        console.log("Success!");
                    }

            });

        });


    </script>

It looks like this might be your csrf header. 看起来这可能是您的csrf标头。

Please add this into your head tag, BELOW the CSRF meta tag: 请将其添加到CSRF元标记下方的head标记中:

<script type="text/javascript">
    $.ajaxSetup({
      headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
    });
</script>

You can always check the headers and data that is being sent under the network tab in your chrome dev tools. 您始终可以在chrome开发工具的“ network标签下查看正在发送的标头和数据。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM