2015-09-18 5 views
0

Я пробовал веб в течение многих часов, пытаясь решить эту проблему. Я довольно новичок в AJAX. Таким образом, я получаю ошибку внутреннего сервера 500 в консоли при попытке отправить мои данные контроллеру. Я думаю, что это несоответствие CSRF, но я пробовал все, что мог подумать, что это решило бы. Я использовал метод meta tag в своем макете.blade.php для представления ASRAX CSRF.Laravel 5 AJAX отправить внутреннюю ошибку сервера 500

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

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

Мой код комментария выглядит следующим образом. Я прохожу $p->id к маршруту, который проходит к контроллеру.

@if(Auth::check()) 
    {!! Form::model($p, ['route' => ['new_comment.post', $p->id]]) !!} 
     <div class = "comment submit"> 
      <textarea id = "comment_content" placeholder = "Your comment goes here!" name = "comment_content" class = "content_display comment"></textarea> 
     </div> 

     <div class = "action"> 
      <li><a class = "comment_button new" href = "#"><i class = "fa fa-check"></i></a></li> 
     </div> 
    {!! Form::close() !!} 
@else 
    <p><a href = "/login">Log in to post a comment</a></p> 
@endif 

Мой AJAX:

<script> 
$('.comment_button.new').click(function(e) { 
    e.preventDefault(); 

    var comment_content = $('#comment_content').val(); 
    var data = 'comment_content'+comment_content; 
    var url = window.location.pathname; 

    $.ajax({ 
     type : "POST", 
     url : url, 
     data : data, 
     success:function(data){ 
      alert(data); 
     }, 
     error:function(){ 

     } 
    }); 
    return false; 
}); 

</script> 

Мой маршрут:

Route::post('/home/view/{id}', ['as' => 'new_comment.post', 'before' => 'csrf', 'uses' => '[email protected]_comment']); 

Мой контроллер:

class ViewPost extends Controller 
{ 

public function show($id) 
{ 
    $posts = Posts::where('id', '=', $id)->get(); 
    $comments = Comments::where('post_id', '=', $id)->get(); 
    return view('view')->with('posts', $posts)->with('comments', $comments); 
} 

public function new_comment(Request $request, $id) 
{ 
    $comment_postID = $id; 
    $comment_data = $request->input('comment_content'); 

    if($request->ajax()) { 
     $com = new Comment; 
     $com->post_id = $comment_postID; 
     $com->comment_content = $comment_data; 
     $com->save(); 
    } 
} 


} 

EDIT

Вот трассировки стека вопроса http://pastebin.com/tNcN5bLP

решаемые

Моя модель «Комментарии» в настоящее время вызывается с помощью «комментарий». Я исправил его, добавив s до конца. Woops!

Кроме того,

Я отправлял данные ненадлежащим образом с помощью AJAX, так что мой контроллер не смог прочитать входной сигнал. Этот фрагмент из моего AJAX

var data = 'comment_content'+comment_content; 
data : data, 

Должно быть

data : {comment_content:comment_content}, 

спасибо!

+0

подумайте больше о 'var url = window.location.pathname;', напишите url что-то вроде этого и проверьте 'url: window.location.pathname; + '/ home/view /' + commentId' –

+0

@Pedrammarandi '/ home/view/{{$ p-> id}}' помещает тот же url, что и window.location.pathname – austin43

ответ

0

Попробуйте следующее в вашем основном шаблоне (тот всегда простираться на каждой новой странице):

<script> 
     $(document).ready(function() { 

         $.ajaxSetup({ 
          headers: { 
           'X-CSRF-TOKEN': "{{ csrf_token() }}" 
          } 
         }); 
     }); 
    </script> 

Убедитесь, что это шаблон лезвия, так что правильно обрабатывает фигурные скобки.

Кроме того, попробуйте включить режим dubug и проверите ответ, чтобы убедиться, что это не что-то другое, вам будет легче помочь, если вы обновите свой ответ с помощью полной трассировки стека проблемы.

+0

Я попробовал ваш код вместо этого Ничего не исправить. Вот моя трассировка стека. http://pastebin.com/tNcN5bLP – austin43

+0

сейчас мне не хватает фактического исключения (ошибка сверху) – JSelser

+0

Ничего себе извините. Похоже, это исключение BadMethodCallException. Это сужает его много. http://pastebin.com/Dk5G6CqW – austin43