Ошибка: запрос не выполнен с кодом состояния 500 Laravel / Vue - PullRequest
2 голосов
/ 30 сентября 2019

Это полное сообщение об ошибке в консоли:

POST http://127.0.0.1:8000/formSubmit 500 (Internal Server Error)
dispatchXhrRequest @ app.js:279
xhrAdapter @ app.js:118
dispatchRequest @ app.js:726
Promise.then (async)
request @ app.js:528
Axios.<computed> @ app.js:553
wrap @ app.js:1071
formSubmit @ app.js:1896
invokeWithErrorHandling @ app.js:25465
invoker @ app.js:25790
original._wrapper @ app.js:31143

Я пытаюсь получить данные из формы VueJs и вставить их в базу данных MySql через контроллер laravel

Мой метод отправки VueJ:

        methods: {
            formSubmit(e) {
                e.preventDefault();
                let currentObj = this;
                axios.post('/formSubmit', {
                    first: this.first,
                    last: this.last,
                    phone: this.phone,
                })
                .then(function (response) {
                    currentObj.output = response.data;
                })
                .catch(function (error) {
                    currentObj.output = error;
                });
            }

Мой контроллер:

class StudentsController extends Controller
{
    public function formSubmit(Request $request)
    {
        $validatedData = $request->validate([
            'first' => 'required|string',
            'last' => 'required|string',
            'phone' => 'required',
        ]);

        $s = new Student();
        $s->first = $validatedData->first;
        $s->last = $validatedData->last;
        $s->phone = $validatedData->phone;
        $s->save();

        return response()->json($validatedData);
    }
}

Это просто демонстрационный проект, поэтому, если есть другие способы отправки без получения этой ошибки, это тоже будет работать.

Спасибо

1 Ответ

0 голосов
/ 30 сентября 2019

500 ошибка сервера означает, что проблема заключается в вашем контроллере laravel. Так что проверьте каждое имя поля таблицы. проверьте, есть ли в вашей таблице имя столбца first . если он существует, проверьте, что вы получаете от своего интерфейса? проверьте, получаете ли вы действительные данные, поэтому в начале проверки контроллера им.

return $request->first

, если это также верно, попробуйте сохранить данные непосредственно из запроса

$this->validate($request,[
            'first' => 'required|string',
            'last' => 'required|string',
            'phone' => 'required',
        ]);

        $s = new Student();
        $s->first = $request->first;
        $s->last = $request->last;
        $s->phone = $request->phone;
        $s->save();

        return response()->json(['result'=>$s]);
...