Аякс не отвечает или кажется так - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь использовать ajax для динамического комментария, все кажется правильным, но когда дело доходит до функциональности, что-то не так, потому что я не получаю никаких предупреждений, это просто не дает мне думать о том, когдаЯ нажимаю на нее, вот и все, ничего не происходит, это код ...

Маршрут -

Route::resource('/comments', 'CommentsController');

Ajax -

$(document).ready(function(){
    $('#submitComment').click(function(e){
        e.preventDefault();
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            }
        });
        $.ajax({
            url: "{{ url('/comments') }}",
            method: 'POST',
            data: {
                body: $('#commentBody').val(),
                post_id: $('#post_id').val()
            },
            success: function(result){
                $('.alert').show();
                $('.alert').html(result.success);
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status);
                alert(thrownError);
            }
        });
    });
});

create.blade -

<h1>Create comment</h1>
{!! Form::open(['id' => 'myForm']) !!}
<div class="form-group">
    {{ Form::textarea('body', '', ['class' => 'form-control','id' => 'commentBody', 'placeholder' => 'Share your thoughts related to this post']) }}
</div>
{{ Form::hidden('post_id', $post->id) }}
{{Form::submit('Submit', ['class' => 'btn btn-primary'])}}
{!! Form::close() !!}

CommentsController @ store -

public function store(Request $request)
{
    $this->validate($request, [
        'body' => 'required'
    ]);


    // Create Comment
    $comment = new Comment;

    $comment->body = $request->body;
    $comment->user_name = auth()->user()->name;
    $comment->post_id = $request->post_id;
    $comment->profile_picture = auth()->user()->profile_picture;

    $comment->save();

    return redirect()->back()->with('success', 'Comment Created');
}

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

это простой пример, и я надеюсь, что он будет полезен для вас:

мой Ajax:

 <script>
        var urlVisit="{{route('comments.store')}}"
        var token = "{{csrf_token()}}"
        $.ajax({
            method: 'POST',
            url: urlVisit,
            data: {
                place_id: 1,
                _token: token
            },
            success: function (response) {
                alert('ok')

            },
            error: function (xhr, ajaxOptions, thrownError) {
                if (xhr.status == 419)
                {
                    alert(xhr.responseText) // text of error

                    // do something
                }
                else if(xhr.status == 401)
                {
                    // do something
                }
                else
                {
                    alert('No')
                }

            }

        });
    </script>

и мой CommentsController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CommentsController extends Controller
{

    public function store()
    {
        //  DO something (validate or save to database,...)
        return response()->json(['success'=>'Comment Created'],200);
    }
}
0 голосов
/ 19 мая 2018

Я не вижу, где вы создаете идентификатор submitComment, который вы ищете в $('#submitComment')

. Вместо этого можно использовать событие отправки формы

Изменить

$('#submitComment').click(function(e){

К

$('#myForm').submit(function(e){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...