Ajax и Laravel 500 (внутренняя ошибка сервера) - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь сделать небольшое небольшое приложение для изучения ajax, но здесь я сталкиваюсь с серьезными проблемами. Вот некоторые фрагменты, когда я нажимаю на кнопку отправить, форма ничего не делает, просто показывает ошибку 500 в консоли chrome. И если я пытаюсь показать что-то успешно ajax-функцию, запрос показывает «undefined». Большое вам спасибо!

Вот мой контроллер

public function store(Request $request)
{
    $response = array(
        'msg' => 'Thank you nephew'
    );

    $request->validate([
        'name' => 'required|min:3',
        'mobile' => 'required',
        'address' => 'nullable',
        'email' => 'nullable'
    ]);

    $values = $request->all();

    echo $values;

    return Response::json($response);
}

Вот мой Ajax-скрипт

<script>
    $('#create-form').on('submit', function (event) {
        event.preventDefault();

        let name = $("input[name=name]").val();
        let mobile = $("input[name=mobile]").val();
        let email = $("input[name=email]").val();
        let address = $("input[name=address]").val();

        console.log(name);

        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('input[name="_token"]').val()
            }
        });

        $.ajax({
            type: 'POST',
            url: '{{ route('addresses.store') }}',
            data: {name: name, mobile: mobile, email: email, address: address, token: $('input[name="_token"]').val()},
            success: function (data) {
                console.log(data);
            }
        });
    });
</script>

Вот модал клинка

<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
     aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel">Create address</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <div class="result"></div>
                <form action="{{ route('addresses.store') }}" method="post" id="create-form">
                    @csrf

                    <div class="form-group">
                        <label for="">Name</label>
                        <input type="text" class="sequence-input" name="name"/>
                    </div>
                    <div class="form-group">
                        <label for="#">Mobile</label>
                        <input type="text" class="sequence-input" name="mobile"/>
                    </div>
                    <div class="form-group">
                        <label for="#">Address</label>
                        <textarea name="address" class="sequence-input" cols="30" rows="6"></textarea>
                    </div>
                    <div class="form-group">
                        <label for="#">Email Address</label>
                        <input type="text" class="sequence-input" name="email"/>
                    </div>
                    <div class="form-group">
                        <button type="submit" id="create" class="sequence-btn sequence-btn--primary">Create</button>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="sequence-btn sequence-btn--danger" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Ошибка 500 вызвана попыткой отобразить массив $values:

$values = $request->all();

echo $values; // <-- Your error is here.

Попробуйте вместо этого использовать вспомогательный метод dd: dd($values)

0 голосов
/ 29 мая 2019

Попробуйте использовать одинарные кавычки в значении имени let mobile = $("input[name='mobile']").val(); и т. Д.

Или

$.ajax({
            type: 'POST',
            url: '{{ route('addresses.store') }}',
            data: $(this).serialize(),
            success: function (data) {
                console.log(data);
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...