使用csrf字段在ajax上运行Laravel 5.4 500内部服务器错误

时间:2017-07-26 16:00:44

标签: php jquery ajax laravel laravel-5.4

我正在尝试使用像这样的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,如果这可能有帮助

1 个答案:

答案 0 :(得分:0)

我已经弄明白了 以下是我为解决这个问题所做的事情

我错误地保存了模型的属性。它不是$form->name('test')它的$form->name = 'test'和json相同。

我需要在字段json_encode上使用$form->json = $fields,以便$form->json = json_encode($fields)成为$request->fields,然后我在发送到字段的ajax请求中更改了字段有效内容的名称所以我{{1}}可以访问它