2015-08-29 44 views
0

一直在梳理论坛和尝试一切,我完全陷入困境。这里是我的形式:Laravel 5使用csrf标记发布后的Ajax 500错误

{!! 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', '[email protected]'); 

这里是我的控制台错误:

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 protected]&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 
+0

我不是很肯定,但尝试删除显式声明隐藏的输入,当你做{{表::打开()}} laravel自动生成的隐藏字段 –

+0

不应该'{! Form :: open(['data-regphoto','method'=>'POST','url'=> ['/ registerphoto']])!!}'be'{!! Form :: open('data-regphoto',['method'=>'POST','url'=> ['/ registerphoto']])!!}'? – ntzm

+0

试过这仍然得到从控制台中的jquery返回500错误 –

回答

0

您需要将meta标签包含在页眉中这

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

添加在脚本这个标签的任何地方

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

这应该把你的问题的关心。

+0

它没有修复它 –

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); 
       } 

      } 
     }); 
+2

请添加一些解释 – TMG