我正在尝试使用像这样的ajax将json发送到laravel函数:
$.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', 'FormBuilderController@store')->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,如果这可能有帮助
答案 0 :(得分:0)
我已经弄明白了 以下是我为解决这个问题所做的事情
我错误地保存了模型的属性。它不是$form->name('test')
它的$form->name = 'test'
和json相同。
我需要在字段json_encode
上使用$form->json = $fields
,以便$form->json = json_encode($fields)
成为$request->fields
,然后我在发送到字段的ajax请求中更改了字段有效内容的名称所以我{{1}}可以访问它