создать метод post и передать id с помощью ajax и laravel - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь добавить ajax в мой метод laravel. Этот метод создает ответ на странице обсуждения. Он работал до Ajax, теперь я хочу добавить Ajax, чтобы сделать ответ очень быстрым! Я стек, потому что я пробовал много методов, чтобы передать $ id (обсуждение_идентификации), но никто не работает!

Я использую Laravel 5.6

мой маршрут:

Route::post('/discussion/reply/{id}', [
    'uses' => 'DiscussionsController@reply',
    'as' => 'discussion.reply'
]);

мой контроллер функций:

   public function reply($id)
{
    $this->validate(request(), [
        'reply' =>'required',
    ]);

    $d = Discussion::find($id);

    $reply = Reply::create([
        'user_id' => Auth::id(),
        'discussion_id' => $id,
        'content' => request()->reply
    ]);


    Session::flash('success', 'Votre réponse a été enregistrer avec success');

    //return redirect()->back(); // this is what i was doing doing before the ajax



    return response()->json(['success'=>'réponse ajouter']);
}

мой JavaScript Ajax:

jQuery.ajax({
      url: "/discussion/reply/",
      method: 'post',
      data: {
        reply: jQuery('#reply').val(),
      },
      dataType: 'json',
      success: function(data){
              jQuery.each(data.errors, function(key, value){
                jQuery('.alert-danger').show();
                jQuery('.alert-danger').append('<p>'+value+'</p>');
            });
        }
    });

и, наконец, мой бланк формы html:

<form action="{{ route('discussion.reply', ['id' => $d->id]) }}" method="POST">
                        {{ csrf_field() }}

                        <div class="form-group">
                            <label for="reply">Laisser une réponse...</label>
                            <textarea name="reply" id="reply" cols="30" rows="10" class="form-control"></textarea>
                        </div>

                        <div class="form-group">
                            <button class="btn pull-right" id="submit">Répondre</button>
                        </div>
                    </form>

1 Ответ

0 голосов
/ 30 июня 2018

Вы можете использовать этот код .test пожалуйста:

Аякс:

<script>
_token="{{csrf_token()}}";

$("form").submit(function(e){
    e.preventDefault();
    $.post("{{route('discussion.reply',['id' => $d->id])}}",
        {

            reply: $('#reply').val(),
            _token:_token
        },
        function(data, status){
            if(status=="success")
            {
                alert('success')
            }
            else
            {
                alert('show error')
            }

        });
});
</script>

DiscussionsController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class DiscussionsController extends Controller
{
    public function reply(Request $request,$id)
    {
        $validator = Validator::make($request->all(), [
            'reply' => 'required',
        ]);

        if ($validator->fails())
        {
            return response()->json(['errors'=>$validator->errors()->all()]);
        }


        $d = Discussion::find($id);

        $reply = Reply::create([
            'user_id' => Auth::id(),
            'discussion_id' => $id,
            'content' => request()->reply
        ]);


        return response()->json(['success'=>'réponse ajouter'],200);
    }
}
...