首页 > 解决方案 > Ajax 和 Laravel 500(内部服务器错误)

问题描述

我正在尝试制作一个简单的小型应用程序来学习 ajax,但我在这里遇到了严重的问题。这里有一些片段,当我点击提交时,表单没有做任何事情,只是在 chrome 的控制台中显示错误 500。如果我尝试在成功的 ajax 函数中显示某些内容,则请求显示“未定义”。太感谢了!

这是我的控制器

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>

标签: phplaravel

解决方案


尝试在名称的值上使用单引号let mobile = $("input[name='mobile']").val();

或者

$.ajax({
            type: 'POST',
            url: '{{ route('addresses.store') }}',
            data: $(this).serialize(),
            success: function (data) {
                console.log(data);
            }
        });

推荐阅读