2017-02-10 3 views
0

DBテーブルのブール値を切り替えるボタンがあります。それは動作しますが、毎回ページをリロードしますので、AJAXを使用して切り替えます。私は、コントローラに必要なIDを提供できるAJAXポストリクエストをどのように行うのか分かりません。これは私がこれまで持っているものです。Ajaxを使用してIDを渡すコントローラメソッドを実装する

TaskController方法:(この場合には1のIDを持つ最初のタスク)を切り替えるために使用

public function updateCompleted($id) 
{ 

    $task = Task::findOrFail($id); 

    if($task->completed) { 
     $task->completed = false; 
    } else { 
     $task->completed = true; 
    } 

    $task->save(); 

    Session::flash('message', 'Task updated!'); 
    return redirect('tasks'); 
} 

ボタン:

{{ Form::open(array('action' => array('[email protected]', $task->id))) }} 
    {{ Form::hidden('_method', 'PATCH') }} 

    @if ($task->completed) 
     {{ Form::button('<span class="glyphicon glyphicon-ok"></span>', array('class'=>'btn btn-danger', 'type'=>'submit')) }} 
    @else 
     {{ Form::button('<span class="glyphicon glyphicon-remove"></span>', array('class'=>'btn btn-danger ajaxSubmit', 'type'=>'submit')) }} 
    @endif 

{{ Form::close() }} 

AJAXのdoesn 「トンの仕事...

$('.ajaxSubmit').click(function(e) { 
    e.preventDefault(); 
     $.ajax({ 
      url: 'tasks/complete/{id}', 
      type: 'POST', 
      success: function(response) 
      { 
       console.log("working"); 
      } 
     }); 
    }); 

とルート:

Route::patch('tasks/complete/{id}', '[email protected]'); 

Ajaxを動作させるにはどうすればよいですか?おかげ

答えて

0

は、CSRFを忘れてはいけないこの

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

を行い、この は、例えば、 "MYID" のIDに隠された入力にIDを追加

$('.ajaxSubmit').click(function(e) { 
    var data = $("#myid").val(); 
e.preventDefault(); 
    $.ajax({ 
     url: '/tasks/complete', 
     type: 'POST', 
     data: data, 
     success: function(response) 
     { 
      console.log("working"); 
     } 
    }); 
    }); 

を試してみてください。

+0

私はこれを試しましたが、今は "405(Method not Allowed)"エラーを受け取りました。これはパッチリクエストなので、 'タイプ'は 'PATCH'にする必要があるので、これを試してみたところ、 '500(内部サーバーエラー)'が返されると思いました。何か案は? – user3623348

+0

それはcrsf propably、それは常にajaxリクエスト(コメントは、アプリケーションのhttp:/ kernel.phpのcrsfmiddlwareをコメントする場合は、その問題をreaky) –

関連する問題