将数据保存到数据库时 Laravel Ajax 500 内部服务器错误

Posted

技术标签:

【中文标题】将数据保存到数据库时 Laravel Ajax 500 内部服务器错误【英文标题】:Laravel Ajax 500 internal server error when saving data to database 【发布时间】:2019-05-24 04:02:25 【问题描述】:

我试图从 ajax 保存表单数据,但我收到一个错误,500 内部服务器错误,这是代码,

主页 html 文件:

@extends('layouts.master')
@section('style')
<meta name="csrf-token" content=" csrf_token() " />
@endsection
@section('content')
<div class="box box-info">
        <div class="box-header with-border">
          <h3 class="box-title">Shift Master</h3>
        </div>
        <!-- /.box-header -->
        <!-- form start -->
        <form class="form-horizontal" method="POST">
            <input type="hidden" name="token" value=" csrf_token() ">
          <div class="box-body">
            <div class="row">
                <div class="col-md-6">
                    <label>Shift Id : </label><span class="text-danger">*
                    <input type="text" class="form-control" name="shift_id" id="shift_id" placeholder="Enter ...">
                </div>
                <div class="col-md-6">
                    <label>Shift Name : </label><span class="text-danger">*
                    <input type="text" class="form-control" name="shift_name" id="shift_name" placeholder="Enter ...">
                </div>                    
            </div>
            <div class="row">
                <div class="col-md-12">
                    <br>
                </div>
            </div>
            <div class="row">
                <div class="col-md-6 ">
                    <label>Shift Status : </label><span class="text-danger">*
                    <input type="text" class="form-control" name="shift_status" id="shift_status" placeholder="Enter ...">
                </div>
                <div class="col-md-6">
                    <label>Shift Remark : </label>
                    <input type="text" class="form-control" name="shift_remark" id="shift_remark" placeholder="Enter ...">
                </div>                    
            </div>

          </div>
          <!-- /.box-body -->
          <div class="box-footer">
            <button type="submit" class="btn btn-default">Cancel</button>
            <button type="button" class="btn btn-info pull-right" onClick ="c();" name="save_shift_master" >Save</button>

          </div>
          <!-- /.box-footer -->
        </form>
      </div>

@endsection
@section('script')


<script src=" asset('js/jquery.min.js') "></script>

<script type="text/javascript">



function c()
   displayQu();

//data table value change

function displayQu()   

    $.ajaxSetup(
      headers: 
        'X-CSRF-TOKEN': $('meta[name="csrf_token]').attr('content')
      
    );


  var shift_id = $('#shift_id').val();
  var shift_name = $('#shift_name').val();
  var shift_status = $('#shift_status').val();
  var shift_remark = $('#shift_remark').val();

  $.ajax(

    type: "POST",
    url: "URL::to('/json-addshiftMaster')",
    data:shift_id:shift_id, shift_name:shift_name, shift_status:shift_status, shift_remark:shift_remark,
    cache: false, 

    success: function(data)

        alert(data.success);

    
  );
 
</script>
@endsection

web.php

Route::get('/home', 'shiftMasterController@create')->name('shiftMaster');
Route::post('/json-addshiftMaster', 'shiftMasterController@addshift');

控制器方法:

public function addshift()


    $table2 = new shift_master_models();
    $table2->shift_id=  Input::get('shift_id');
    $table2->shift_name=  Input::get('shift_name');
    $table2->shift_status=  Input::get('shift_status');
    $table2->shift_remark=  Input::get('shift_remark');

    $table2->save();

    $response = array(
    'status' => 'success',
    'msg'    => 'Setting created successfully',
    );

    return Response::json($response);

错误:

jquery-3.3.1.min.js:2 POST http://127.0.0.1:8000/json-addshiftMaster 500(内部服务器错误) 发送@jquery-3.3.1.min.js:2 ajax@jquery-3.3.1.min.js:2 显示曲@home:547 c@家:529 onclick@home:349

我是 Laravel 的新手,嘿,请帮帮我,我找不到解决这个问题的方法。

谢谢。

【问题讨论】:

ajax post in laravel 5 return error 500 (Internal Server Error)的可能重复 我们需要比这更多的方式来帮助您。这 500 很可能来自您的 shift_master_models 实例化和/或保存,但如果没有 laravel 错误消息,它实际上可能在任何地方。查看storage/logs中存储的日志 日志错误:local.ERROR: 异常 'Symfony\Component\Debug\Exception\FatalErrorException' 在 C:\wamp64\ 中出现消息 'Class 'App\Http\Controllers\shift_master_models' not found' www\LaravelTest\app\Http\Controllers\shiftMasterController.php:55 【参考方案1】:

您忘记将 shift_master_models() 导入控制器。

只需将它写在控制器类的顶部即可:

use App\shift_master_models;

确保在 Model 类中正确声明了命名空间,例如:namespace App;,或者如果它在 Models 文件夹中,就像这样:namespace App\Models;

【讨论】:

【参考方案2】:

&lt;meta name="csrf-token" content=" csrf_token() " /&gt;

$('meta[name="csrf_token]')

您现在发现问题了吗?这只是一个错字。应该是

$('meta[name="csrf-token"]')

【讨论】:

我将其更正为 $('meta[name="csrf-token"]') ,然后出现此错误:无法加载资源:json-addshiftMaster:1 服务器响应状态500 个(内部服务器错误)【参考方案3】:

你必须在控制器类的顶部导入你的模型类,

use App\shift_master_models;

【讨论】:

以上是关于将数据保存到数据库时 Laravel Ajax 500 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 5 中将多行从动态表单保存到数据库

使用 Laravel 4+ 从 jQuery/ajax 保存序列化的可排序数据

如何在 Laravel 中使用 Ajax 调用将数据发布到数据库?

Laravel 中的 Ajax Jquery 未将值保存到数据库

如何将视图中的数组传递给 ajax 并在 Laravel 5 的控制器中访问?

如何通过邮件方法将数据从 ajax 传输到 laravel 5.2 控制器