2016-10-30 15 views
0

Laravel 5.3で問題が発生しました。特に、JavaScriptからAJAXリクエストデータを投稿するとオブジェクトを作成できますが、 (内部サーバーエラー)。Laravel、AJAXリクエストでオブジェクトを作成できません

これは私のルートです:

Route::post('create_comment', '[email protected]_store'); 

これは私のコントローラです:

public function ajax_store(Request $request) 
{ 
    $comment = new Comment(); 
    $comment->body = $request->body; 
    $comment->post_id = $request->post_id; 
    $comment->user_id = auth()->id(); 
    $comment->save(); 
    return response()->json(['data' => $comment]); 
} 

これは私のAjaxのリクエストです:

$('.comment-submit-button').on('click', function(e) { 
    e.preventDefault(); 
    var body = $(this).closest('form').find('textarea').val(); 
    var post_id = $(this).data(); 

    $.ajax({ 
     method: 'POST', 
     url: urlCreateComment, 
     data: { 
      body: body, 
      post_id: post_id 
     } 
    }).done(function(data) { 
     console.log(data['data']); 
    }); 

編集: 私のインポートは私の指標でありますページ

@push('scripts') 
<script> 
    var urlCreateComment = '{{ url('create_comment') }}'; 
</script> 

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

私形式:

<form action="{{ url('create_comment') }}" method="post"> 
    <div class="form-group"> 
     <textarea placeholder="Write a comment ..." class="form-control" name="body" cols="30" rows="1"></textarea> 
    </div> 
    <!-- /.form-group --> 
    {{ csrf_field() }} 

    <div class="form-group adjust"> 
     <button data-id="{{ $post->id }}" type="submit" class="comment-submit-button"> 
      <i class="fa fa-caret-right"></i> 
     </button> 
    </div> 

</form> 

編集: 私はこのエラーを取得する:文字列への変換 アレイ(SQL:commentsに挿入...

編集:...私は、それを解決問題は、私は要求にgetメソッドを実装する必要がありました...

$request->get('body'); 

しかし、今私は新しい問題をアップロードするimageと私はLarravel 5.3でajax経由でhasFile()メソッドを使用しています。それはnullを返します...なぜですか?

誰もこれまでに経験したことがありますか?どんな洞察とアドバイスも本当に感謝しています。前もって感謝します!

+0

どこJS変数 'urlCreateComment'定義されてはいるのですか? 500のエラーには、役に立つメッセージを含む特定の詳細が付いているので、それは何ですか? – ceejayoz

+0

返信いただきありがとうございます。どうすればこの情報を見つけることができますか? – Anas

+0

ブラウザのデベロッパーコンソールを確認してください。デフォルトでLaravelは500エラーに関するデバッグ情報をブラウザに出力します。 – ceejayoz

答えて

1

次を変更するあなたのJSで:

var post_id = $(this).data(); // $request->get('post_id') will produce an array 

この目的のために:

var post_id = $(this).data('id'); 
+0

シェイク・ヒエラ、あなたのブログに何が起こったのですか? – itachi

+0

同じものはありません – Anas

関連する問題