[英]Laravel 5.4 500 internal server error on ajax with csrf field
我正在嘗試使用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
我已經弄明白了這是我為修復它所做的事情
我錯誤地保存了模型的屬性。 這不是$form->name('test')
而是$form->name = 'test'
並且與json相同。
接下來我需要在字段上使用json_encode
,因此$form->json = $fields
變為$form->json = json_encode($fields)
,我更改了要發送的ajax請求中字段有效負載的名稱到字段,所以我$request->fields
可以訪問它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.