500 Внутренняя ошибка сервера при использовании Ajax в Laravel - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь использовать вызов ajax в своем блэйд-представлении и отправлять данные ajax на контроллер для вставки в базу данных.

Вот мой ajax:

<!DOCTYPE html>
<html>
  <head>
      <title>FormBuilder Editor</title>
  
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
      <script src="https://formbuilder.online/assets/js/form-builder.min.js"></script>

      <meta name="csrf-token" content="{{ csrf_token() }}">
  </head>

  <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(); //JSON data return

        console.log(mFormData);
  	
    		$.ajax({
          headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          },
    			type: "POST",
    			url: "save",
    			data: {
            "mFormData":mFormData
          }
    		}).done(function (msg) {
    			alert("Data saved!" + msg);
    		});
    	});
    
  </script>
</html>

А вот мой контроллер:

public function saveToDb(Request $request) {

    $data = $request->all();

    if($data) {
        Form::insertData($data);
    }

    return view('welcome');
}

И это моя функция вставки в модели:

public function insertData($formData) {
    DB::EnableQueryLog();

    $sql = DB::table('form')->insert(['formKey' => 'testForm2', 'formData' => $formData]);

    return $sql;
}

Когда янажмите на кнопку сохранить, это ошибка в сети XHR: enter image description here

Как я могу это исправить?Большое спасибо!

Ответы [ 2 ]

1 голос
/ 03 июня 2019

вы вызываете insertData статически. так должно быть

public static function insertData($formData) {
    DB::EnableQueryLog();

    $sql = DB::table('form')->insert(['formKey' => 'testForm2', 'formData' => $formData]);

    return $sql;
}
0 голосов
/ 03 июня 2019

Замените эту строку:

Form::insertData($data);

на эту:

app()->make(From::class)->insertData($data);

Или добавьте экземпляр модели Form в конструктор, если хотите.Однако способ, которым вы вставляете, не , как модели предназначены для вставки .

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