javascript - 在 Laravel 中使用 Ajax 时出现 500 内部服务器错误
问题描述
我正在尝试在我的刀片视图中使用 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;
}
当我单击按钮保存时,这是 Network XHR 中的错误:
我该如何解决这个问题?非常感谢!
解决方案
您正在静态调用 inserData 。所以应该是
public static function insertData($formData) {
DB::EnableQueryLog();
$sql = DB::table('form')->insert(['formKey' => 'testForm2', 'formData' => $formData]);
return $sql;
}
推荐阅读
- matlab - 如何在 Matlab 中模拟电容器行为?
- python - 如何在 python 中使用 bunyan 为 sysout 日志使用日志记录适配器
- ssas - 用于 asp.net 核心的 ADOMD nuget 包
- java - Eclipse VerificationTokenRepository 类型的层次结构不一致
- jquery - jQuery 中未检测到简单表单 ID
- java - 如何在Java中计算目录中具有相同文件扩展名的文件数?
- pandas - 在循环内对多行熊猫数据框进行分组
- python - 字符串中的字节变量插值
- scala - 有什么方法可以使用 spark 读取任何文件格式吗?
- sql - 如何从表中获取过去 24 小时的记录