Laravel用ajax形成帖子

时间:2017-03-03 10:06:52

标签: php jquery ajax laravel

我想发布一个带有ajax的表单。我的控制台出错了:

  

无法加载资源:服务器响应状态为500(内部服务器错误)

我有一张表格:

{!! Form::open(array('url'=>'uren','method'=>'POST', 'id'=>'myform')) !!}
//inputs here etc..
{{ Form::button('Add', array('class' => 'btn btn-btn send-btn')) }}
{{ Form::close() }}

我的Ajax:

$(document).ready(function(){
    $('.send-btn').click(function(){
        $.ajax({
            url: 'uren',
            type: "post",
            data: {
                'werk':             $('input[name="werk"]').val(),
                'starttijd':        $('input[name="starttijd"]').val(),
                'eindtijd':         $('input[name="eindtijd"]').val(),
                'omschrijving':     $('input[name="omschrijving"]').val(),
                '_token':           $('input[name="_token"]').val()},
            success: function(data){
                alert(data);
            }
        });
    });
});

在路线(web.php)中:

Route::post('uren', 'User\UrenController@store');

在控制器中:

public function store() {

    if (\Request::ajax()) {

        if(Request::input('omschrijving') != '') {
            $omschrijving = Request::input('omschrijving');
        }else{
            $omschrijving = '';
        }

        DB::table('uren')->insert(
            [
                'userID' => Auth::user()->id,
                'datum' => Carbon\Carbon::now(),
                'projectID' => Request::input('werk'),
                'starttijd' => Request::input('starttijd'),
                'eindtijd' => Request::input('eindtijd'),
                'omschrijving' => $omschrijving
            ]
        );

    }

}

我认为我需要使用 csrf_token 标记执行某些操作。传递500错误。但是我该怎么做呢?

[UPDATE] 我添加了令牌,然后我可以发回令牌并在alert中显示令牌。但是当我添加DB::table....时,它仍然会给我500错误

[完成] 问题是我的查询..字段为空但它需要是一个字符串。我解决了。

1 个答案:

答案 0 :(得分:1)

如果您不想要CSFR中间件,可以在laravel 5中禁用它:

禁用CSFR保护: 转到此文件:

   app/Http/Middleware/VerifyCsrfToken.php

您可以禁用所有发布请求或特定路由。 有关更多信息xfer:https://laravel.com/docs/5.0/routing#csrf-protection

OR

只需在您的数据"_token": "{{ csrf_token() }}",

中传递另一个参数即可