Каков правильный подход к AJAX POST и контроллеру ресурсов в laravel (5.6)? - PullRequest
0 голосов
/ 28 июня 2018

Так что я совершенно новичок в javscript / ajax и т. Д., И пытаюсь справиться с этим. У меня есть различные варианты вызова AJAX, достаточно знать, что он в основном работает.

Теперь, в частности, я пытаюсь получить содержимое моей "формы" в моей базе данных.

Итак ...

1. вот моя запись маршрута в web.php

Route::resources(['evaluations' => 'EvaluationsController']);

2. Метод create моего контроллера ресурсов представляет форму, в которой есть javascript / ajax.

public function create()
    {
       return view ('evaluations.create');
    }

2. Мой AJAX звонок в виде

$.ajax({
    type:"POST",
    url:"/evaluations",
    headers: { 'CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
    datatType : 'json',
    data:oneEvaluation,
    cache: false,
    contentType: false,
    processData: false, 
    error: function (data)
      {
        console.log('AJAX call Failed');
      },
        success: function(data)
      {
        console.log('AJAX call success');
    },
});

3. и вызов ajax направляется в метод store

 public function store(Request $request)
    {
      dd($request);
      return response()->json($response);
     ....

4. И я получаю правильные результаты

, даже если dd(); не работал

AJAX call success
{status: "success", msg: null}

Так что теперь ... к чему относится код для записи в базу данных? С одной стороны, я ожидал бы дальнейшего развития своей функции «store» и передачи нового идентификатора элемента в метод show, чтобы показать положительные результаты.

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

1 Ответ

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

Итак, Javascript - это язык на стороне клиента, и вы не можете писать напрямую в базу данных на языке клиента. Вам нужно использовать язык на стороне сервера, в вашем случае php. Таким образом, ваша вставка должна произойти в контроллере Laravel и вернуть ответ об успешном завершении.

Вам необходимо создать красноречивую модель для оценок (Документы здесь -> https://laravel.com/docs/5.6/eloquent).. Затем в вашем контроллере вы можете либо вызвать метод Evaluations :: create (). Затем, когда вы вызываете метод save в оценках. модели, данные будут сохранены в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...