2016-02-13 119 views
0

當我提交表單時,出現此錯誤,頁面自動重新加載,但瀏覽器中的網址顯示我在表單中發佈的路由和內容。然後,如果我繼續並重新提交而不重新加載頁面,則工作得很好。難道我沒有發佈令牌本身?我已經將meta標籤添加到頭部。Laravel AJAX 500內部服務器錯誤,令牌匹配

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

JS:

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

$('#postForm').submit(function(){ 

    var body = $('#postbody').val(); 
    var profileId = $('#user_id').text(); 

     $.ajax({ 
      type: "POST", 
      url: "/post/"+profileId, 
      data: {post:body, profile_id:profileId}, 
      success: function(data) { 
       console.log(data); 
      } 
     }); 
}); 

路線:

Route::post('/post/{id}', [ 
    'uses' => '\App\Http\Controllers\[email protected]', 
    'as' => 'post.message', 
    'middleware' => ['auth'], 
]); 

控制器:

public function postMessage(Request $request, $id) 
{ 
    if(Request::ajax()) 
    { 
     $this->validate($request, [ 
      'post' => 'required|max:1000', 
     ]); 

      $newMessage = Auth::user()->posts()->create([ 
       'body' => $request->input('post'), 
       'profile_id' => $id 
      ]); 
    } 
} 

查看:

<form role="form" action="#" id="postForm"> 
    <div class="feed-post form-group"> 
     <textarea class="form-control feed-post-input" id="postbody" name="post"></textarea> 
     <div class="btn-bar"> 
      <button type="submit" class="btn btn-default btn-post"></button> 
     </div> 
    </div> 
    <input type="hidden" name="_token" value="{{ csrf_token() }}"/> 
</form> 

UPDATE:

因此,日誌說,在我的控制器「支持::阿賈克斯()不應該被靜態調用」。我刪除了該代碼,現在它工作正常。但是,如果有更好的解決方法,我想知道是否刪除它可以。謝謝!

答:它是通過改變

if (Request::ajax()){ 
    // code... 
} 

if ($request->ajax()){ 
    // code... 
} 
+0

嗨,檢查我的Ajax解決方案提交對這個職位http://stackoverflow.com/questions/35284665/use-ajax-形式in-laravel-5/35284853#35284853 – umefarooq

回答

1

變更申請::阿賈克斯()以$請求 - > AJAX()

+0

作品。謝謝!! –

0

你正在做一個AJAX後 - 你不應該在任何地方都重定向。如果出現錯誤 - 您應該只在瀏覽器的「開發人員工具」中看到它。

嘗試增加:

$('#postForm').submit(function(e) { 
    e.preventDefault(); 
    ... 
} 

這樣的瀏覽器不張貼的形式,而不是你的AJAX調用的。還試着修復你的頭部情況:X-CSRF-TOKEN到X-CSRF-令牌

另外,你的postMessage()方法根本不返回任何東西。您應該通知用戶那裏的結果或者只需返回$ newMessage。

相關問題