【问题标题】:filter data in laravel with ajax when change dropdown list更改下拉列表时使用ajax过滤laravel中的数据
【发布时间】:2014-06-17 02:38:01
【问题描述】:

我正在尝试使用下拉菜单从查询中过滤记录。这个想法是在更改下拉菜单时应用过滤器,所以我想解决方案是使用 ajax,但我不太了解它以及如何在 laravel 中使用它。

这是我的控制器:

public function setSelectTestView()
{
    $test         = Test::orderBy('updated_at', 'des')->lists('nom', 'id');
    $cursos       = Curs::orderBy('nom', 'asc')->lists('nom', 'id');
    $assignatures = Assignatura::orderBy('nom', 'asc')->lists('nom', 'id');

    return View::make('Test.results.result_select_test')
        ->with(array('test' => $test, 'cursos' => $cursos, 'asg' => $assignatures));
}

还有我的刀:

<fieldset>
  {{ Form::select('curs', $cursos) }}
  {{ Form::select('assignatura', $asg) }}
</fieldset>

{{ Form::open(array('action' => array('ResultsController@setSelectTestView'))) }}
  </br>                                                
  <fieldset>
    {{ Form::select('test', $test) }}
  </fieldset>
  </br><input type="submit" value="Seleccionar"/>

{{ Form::close() }} 

我想要的是通过cursassignatura过滤变量$test,比如

$test = Test::where('curs_id', $curs_id)->where('assignatura_id', $asg_id);

但是以异步方式执行此操作并应用一个过滤器,具体取决于哪个下拉菜单已更改,但如果第二个过滤器已更改,则继续应用第一个过滤器(均已应用)

【问题讨论】:

  • 我只是构建这个来很好地展示你想要做什么。这是公平的,它做的事情和你想做的一样,除了联系人。它应该有你需要的一切,我试着把它记录好......laravel.io/bin/yQzdo#4,10

标签: php ajax laravel


【解决方案1】:

您可以首先在选择框的 onchange() 事件上获取过滤器的值,然后通过 post 将其发送到您的控制器。

    $('select[name="curs"]').onchange(){
   $cur = $(this).val();
   $asg = $('select[name="assignatura"]').val();
 $.ajax({
    url:'/result/search',
    data:{cur:$cur,asg:$asg;},
    cache:false,
    type:'POST',
    beforeSend: function (xhr) {
        var token = $('meta[name="csrf_token"]').attr('content');

        if (token) {
            return xhr.setRequestHeader('X-CSRF-TOKEN', token);
        }
    },
    success:function(data){ // this is view data returned by controller 
        console.log(data);
        $('#result_container').html(data); // use it to fill your results
    }
})}

使用你的路线

Route::post('/result/search','ResultController@search');

然后在控制器中使用参数查询结果。

  public function search(){

$cur_id = Input::get('cur');
$asg_id = Input::get('asg');

    $test = Test::where('curs_id', $cur)->where('assignatura_id', $asg_id);

return view('Test.results.result_select_test',compact('test'));}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    相关资源
    最近更新 更多