Вставить данные в MySQL с помощью Ajax в Laravel - PullRequest
0 голосов
/ 31 мая 2019

У меня есть переменная JS, которая хранит значение JSON в моем блэйд-представлении, и я хочу вставить его в MySQL в проекте Laravel. Но я не знаю, как написать это правильно. Вот что я попробовал в моем виде лезвия:

<body>
    <div id="fb-editor"></div>

    <div id="saveToDatabase">
      <button id="saveBtn" type="button">Save To Database</button>
    </div>
</body>

<script>
  var formBuilder = $('#fb-editor').formBuilder();

  

  $("#saveBtn").click(function() {
  	var mFormData = formBuilder.actions.getData(); //my JSON data 
  	
  	$.ajax({
  		type: 'POST',
  		url: '/saveToDatabase',
  		data: {"mFormData":mFormData}
  	}).done(function (msg) {
  		alert("Data saved!");
  	});
  });
  
</script>

Но когда я его запускаю, появляется сообщение об ошибке: jquery.js: 8630 POST http://localhost/saveToDatabase 404 (Not Found).

Как я могу это исправить?

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

Сначала введите данные своей базы данных в файл .env.

Вам необходимо использовать два маршрута.Один для блейд-файла для рендеринга, а другой для API-запроса.

На маршрутах / web.php определите свой маршрут,

Route::get('/', function(){ return view('app');});

Создайте app.blade.php в ресурсах / представленияхПапка / с вашим HTML-кодом.

На маршрутах / api.php определите свой маршрут следующим образом:

Route::post('saveToDatabase','HomeController@saveToDb')

Далее необходимо создать метод saveToDb в HomeController.

Откройте приложение \ Http \ Controller \ HomeController.php

Создайте новый метод

public function saveToDb()
{
  // Database Insertion Code goes here

}

Laravel Обеспечьте защиту CSRF для запроса POST.Поэтому добавьте исключение к этому маршруту, добавив его в App \ Http \ Middleware \ VerifyCSRFToken.php

  protected $except = [
        'api/*'
    ];

Для операции вставки мы можем сделать это с помощью модели.

Итак, сначала создайте Form.php в папке App \.

Внутри этого мы указываем поля базы данных.

<?php

use Illuminate\Database\Eloquent\Model;

class Form extends Model
{
    protected $fillable = [
        "key", "data"
    ];

    protected $hidden = [];

}

Далее мы можем использовать эту модель для вставки данных вТаблица форм.

В вашем HomeController.php вверху

use App\Form;
use Request;

Теперь мы можем обновить функцию saveToDb, которую мы пишем ранее.

public function saveToDb()
{
  // Request all the post data
  $req = Request::all();    
  // From that post data store key and data part to form table
  Form::create($req);
}

Если у вас есть проблемы с маршрутом, контроллером или моделью.См. Официальные документы Laravel: https://laravel.com/docs/5.8/routing

И этот также полезен для начала работы с Laravel.https://laracasts.com/series/laravel-from-scratch-2018

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

Маршрут выбран неправильно. http://localhost/saveToDatabase не найти что-то сделать

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