2015-12-17 26 views
2

我試圖做一個POST到500內部服務器錯誤阿賈克斯Laravel

http://localhost:8888/test


JS

$('.saveBTN').click(function (event) { 

    $("form#editForm").on("submit", function(event) { 
     event.preventDefault(); 

     var inputs = {}; 
     $("#editForm :input").each(function() { 
     inputs[$(this).attr("name")] = $(this).val(); 
     }); 

     var $inputs = JSON.stringify(inputs); 

     $.ajax({ 
      headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}, 
      url: '/test', 
      type: 'POST', 
      dataType: 'json', 
      data: $inputs, 
      success: function (data, textStatus, xhr) { 

       console.log(data); 
      }, 
      error: function (xhr, textStatus, errorThrown) { 

       console.log('PUT error.'); 
      } 
     }); 

}); 

我不斷收到

500內部服務器錯誤

我試過加

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

,這對我的Ajax

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

在這個任何提示將非常感激!

+1

火起來的檢查看看500響應,會給你到底是怎麼回事更好的主意的全部細節。猜測是路由你說你的錯誤處理PUT錯誤,但正在發出POST請求,你正在尋找你的路線上的PUT? –

+0

你的路由是什麼樣的? – camelCase

+0

你可以檢查存儲文件夾中的日誌文件是否存在錯誤堆棧? – Vikas

回答

7

將下面的內容添加到表單中。

// This will generate token field which will be token 
{{ csrf_field() }} 


// Expected Output 
<input type="hidden" name="_token" value="ssdfdsfsdfsdfs32r23442"> 

VerifyCsrfToken.php - 文件是middleware,其被包含在Web中間件組中,將自動驗證在請求輸入token存儲在會話令牌相匹配。

請參閱此網址的幾個信息: http://laravel.com/docs/master/routing#csrf-x-csrf-token

更新 - 2016年12月23日

由於laravel的,你可以使用如下爲好。

<form action="/foo/bar" method="POST"> 
    <input type="hidden" name="_method" value="POST"> 
    <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
</form> 

API參考:https://laravel.com/docs/master/routing#form-method-spoofing

0

@Paulpro@馬克·戴維森在波紋管的meta標籤評論提到應該有content屬性,而不是值:

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

相反的:

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

希望這有助於。

+0

現在讓我試試。 – ihue