使用csrf令牌的帖子上的Laravel 5 Ajax 500错误

时间:2015-08-29 19:46:35

标签: jquery ajax laravel

正在梳理论坛并尝试一切,我完全被难倒了。这是我的表格:

{!! Form::open(['data-regphoto', 'method' => 'POST', 'url' => ['/registerphoto']]) !!}
            <input type="hidden" id="token" value="{{ csrf_token() }}">
            <button type="submit" class="btn blue" id="savebutton">Save</button>
{!! Form::close() !!}

这是我的ajax电话:

$('form[data-regphoto]').submit(function (e) {
            e.preventDefault();

            console.log('photo pass to func: ' + data);

            var form = $(this);
            var url = form.prop('action');
            var token = $('#token').val();

            $.ajax({
                type: 'POST',
                url: url,
                data: {'_token': token, 'photo': data },
                async: true,
                success: function() {

                    if(message) {
                        console.log('sucess: ' + data);
                        //$('.flash').html(message).fadeIn(400).delay(1200).fadeOut(600);
                    }

                }
            }); 

        });

这是我的路线:

Route::post('/registerphoto', 'UserController@registerPhoto');

这是我的控制台错误:

POST http://localhost:8000/registerphoto 500 (Internal Server Error)
n.ajaxTransport.k.cors.a.crossDomain.send @ jquery.js:8625
n.extend.ajax @ jquery.js:8161
(anonymous function) @ ?email=kevin5@simongjewelry.com&firstname=Test&lastname=McTest&account=4&role=admin&permissions=p1p…:374
n.event.dispatch @ jquery.js:4430
n.event.add.r.handle @ jquery.js:4116

2 个答案:

答案 0 :(得分:0)

您需要在页面标题中包含元标记,如此

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

在脚本代码中的任意位置添加

$.ajaxSetup
({
   headers : {'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')}
});

这应该解决你的问题。

答案 1 :(得分:0)

试试这个:

$.ajax({
            type: 'POST',
            url: url,
            data: {'_token': token, 'photo': data },
            async: true,

        chunking: true,
        cache: false,
        contentType: false,
        processData: false,
            success: function() {

                if(message) {
                    console.log('sucess: ' + data);
                    //$('.flash').html(message).fadeIn(400).delay(1200).fadeOut(600);
                }

            }
        });