簡體   English   中英

在帶有CSRF字段的Ajax上的Laravel 5.4 500內部服務器錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM