使用ajax laravel 5发布数据而不重新加载

时间:2015-12-08 06:52:05

标签: jquery ajax laravel

我是laravel的新手我需要使用ajax发布数据我的问题是 如何在没有使用laravel 5中的ajax重新加载的情况下从textarea中的输入发布数据? 到目前为止,我的代码我不知道下一步该做什么:

路由

<?php


Route::group(['prefix' => 'api'], function() {
    Route::group(['prefix' => 'v1'], function() {
        Route::group(['prefix' => 'cars'], function() {
            Route::get('', function () {
                return App\Car::all();
            });

            Route::post('', function () {
                return App\Car::create(Request::all());
            });

            Route::get('{id}', function ($id) {
                return App\Car::find($id);
            });

            Route::post('{id}', function ($id) {
                return App\Car::find($id)->update(Request::all());
            });
        });
    });
});

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

查看

<html>
    <head>
        <title>
            asdf
        </title>
    </head>
    <body>
        <input type="text" id="cars"/>
        <input type="text" id="carowner"/>
        <button class="create-car"> Create </button>
        <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>          
        <script type="text/javascript">


            $(document).ready(function() {
                $.get('/api/v1/cars').success(function(data) {
                    data.forEach(function(car) {
                        console.log(car);
                        $('body').append(car.name + "<br/>");                       
                    });
                }); 
                $('.create-car').click(function() {
                    var g = $("#cars").val();
                    var o = $("#carowner").val();
                    console.log(g);
                    console.log(o);
                    var data = {

                        "name": g,
                        "owner": o


                        })


                    }
                     $.post('/api/v1/cars/', data);
                });     
            });
        </script>
    </body>
</html>

1 个答案:

答案 0 :(得分:1)

在Laravel中使用AJAX发布数据很简单,但您必须记住,Laravel还需要在您的数据中传递csrf_token(),否则会发生错误。

注意:令牌通常由Laravel自动创建,但为此您应该使用HTML外观。如果你没有,你需要在表单中放置一个隐藏的字段,如下所示:

<input type="hidden" name="_token" value="{{ csrf_token() }}">

所以很难过,我只举一个如何做到这一点的例子:

$.ajax({

    var g = $("#cars").val();
    var o = $("#carowner").val();
    var token = $("#_token").val();
     var postData = {
         _token: token,
         name:  g,
         owner: o
     }      

      url: "/api/v1/cars/'",
            type: "POST",
            dataType: "json",
            data: postData,
        }).done(function(response){


        }

   })

注意:这是Laravel的一个AJAX示例,但我没有检查您的路由是否正确,或者您的控制器和模型是否包含所需的功能。如果你有一切就绪,那就是这样!