将数据保存到数据库时 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】:<meta name="csrf-token" content=" csrf_token() " />
$('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 4+ 从 jQuery/ajax 保存序列化的可排序数据
如何在 Laravel 中使用 Ajax 调用将数据发布到数据库?
Laravel 中的 Ajax Jquery 未将值保存到数据库