2017-11-03 8 views
0

現在、作成フォームをコントローラに渡そうとしています。私は、ルートとAjaxコールのセットアップと、そのルートへの通話を持っています。私の問題は、私はajax呼び出しを使用するとヘッダーの検査ツールは私のフォームの値を正しく表示しているが、私がコントローラに入るとき、request-> input doesntはフォームの値を示している。コントローラが入力を取得しないlaravel

ここに私のAJAX呼び出し

$(document).on("click", ".form-submit-btn", function() { 
    // Get the form id. 
    var formID = $(this).closest("form").attr("id"); 
    var serializedForm = $(this).closest("form").serialize(); 
    var substringEnd = formID.indexOf("-form"); 
    var route = formID.substr(0, substringEnd).replace("-", "_"); 

    $.ajaxSetup({ 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     } 
    }); 

    // Submit the form. 
    $.ajax({ 
     method: "POST", 
     url: "/" + route, 
     data: { 
      serializedForm 
     }, 
     success: function(data) { 
      alert(data); 
     } 
    }); 
}); 

はここに私のコントローラ

// Create Role 
public function create(Request $request) 
{ 
    // Get and validate request params 
    $role = $request->input('role_name'); 
    $active = $request->input('role-active', false); 

    return $role; 
} 

そして、ここでは私のルートは

Route::post('/create_role', '[email protected]'); 

ですされて私はからAJAX呼び出しを妨げている何かが足りません値をコントローラに送信する

これは私の形式でも役に立ちます。

<form id="create-role-form" class="form"> 
{{ csrf_field() }} 
<button class="pull-right right-close-btn">X</button> 
<h1>Add Role</h1> 
<hr /> 
<div class="form-group"> 
    <label>Role Name</label> 
    <input type="text" name="role_name" class="form-control" /> 
</div> 
<div class="form-group"> 
    <input type="checkbox" name="role_active" value="true" checked /> Active 
</div> 
<div class="form-group"> 
    <button class="btn btn-primary form-control form-submit-btn">Create</button> 
</div> 

+1

チェックしますprint_r($要求 - > serializedForm)お役に立てば幸いとブラケットが問題だったこと – RamAnji

答えて

0

私はこの問題は、このライン

data: {serializedForm}, 

だけ

data: serializedForm, 

に変更し、それが問題を解決する必要があると思います。

問題

私はあなたのajax要求には二つの問題を参照してください

  1. はあなたにdata:{serializedForm},構文http://es6-features.org/#PropertyShorthand
  2. ES-6であるので、あなたがES-6 TransPilerを使用していることを確認している場合」再javascriptは正常に動作しています。あなたは既存のコードで$request->get('serializedForm')['role_name']のようにそれを得ることができるはずです。

は、私は、フォームのシリアライズに慣れていないあなたに感謝、それはあなたのコントローラで

+1

をデータが無駄であるかどうかを見つけますか通常はデータを配列として手入力するだけです。 –

関連する問題