Laravel 5.4 500内部服务器上Ajax和CSRF场错误
问题描述:
我试图JSON发送到laravel功能使用Ajax这样的:Laravel 5.4 500内部服务器上Ajax和CSRF场错误
$.ajax({
url: "{{ route('store-formbuilder') }}",
type: 'POST',
data: { payload: payload, _token: "{{csrf_token()}}" }
})
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
有效载荷看起来是这样的:
{"fields":[{"label":"Text","field_type":"text","required":true,"field_options":{"size":"small"},"cid":"c2"}]}
我的路线/web.php:
Route::post('/admin/formbuilder', '[email protected]')->name('store-formbuilder');
和我的存储功能的控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Form;
class FormBuilderController extends Controller
{
public function store(Request $request)
{
if ($request->ajax()) {
$fields = $request->fields;
//foreach ($fields as $field) {
$form = new Form;
$form->name('test');
$form->json($fields);
$form->save();
return response()->json(['success' => 'stana']);
//}
}
return redirect()->route('formbuilder');
}
}
当我尝试发送ajax请求时,它控制台记录错误,它说500内部服务器错误 我有csrf令牌,如您所见。我不知道问题可能是什么。 注:我使用Laravel 5.4,如果这可能帮助
答
我已经想通了 下面是我做修复它
我被错误地保存模型的属性的东西。这不是$form->name('test')
它是$form->name = 'test'
和json相同。
,我需要使用的字段json_encode
接下来的事情,所以$form->json = $fields
变得$form->json = json_encode($fields)
,我改变了我发送到田地Ajax请求领域有效载荷的名字,所以我$request->fields
可以访问它
一500内部错误意味着代码本身有问题(通常是语法);检查存储/日志中的日志。 –
您在检查过程中看到过网络中500错误的预览吗? –
你可以粘贴'Form'模型吗? –