【问题标题】:Laravel - Ajax when Search it Duplicates dataLaravel - 搜索时的 Ajax 重复数据
【发布时间】:2019-05-07 21:57:45
【问题描述】:

您好,当我在文本框中搜索时,数据会自动重复,为什么?

这是我的 ajax 代码。请检查此代码,因为它是重复的问题。另外请确保它的语法正确。

$('#search').on('keyup',function(){
    $value=$(this).val();
    $.ajax({
        type : 'get',
        url  : '{{ URL::to('admin/employeemaintenance/search') }}',
        data : {'search':$value},
        success:function(data){
            $('tbody').html(data);
        }
    });
})

我的控制器

请检查此代码,它可能有问题,我可能有一些巨大的数据字段,更新和删除按钮仍然不包括在这里:

    public function search(Request $request){
    if($request->ajax())
    {
        $output="";
        $employees = DB::table('employeefms')->where('last_name','LIKE','%'.$request->search.'%')
                                             ->orWhere('first_name','LIKE','%'.$request->search.'%')->get();


        if($employees)
        {
            foreach($employees as $key => $employee){
                if($employee->gender==0)
                {
                    $gender="Male";
                }
                else
                {
                    $gender="Female";
                }
            $output.='<tr>'.
                     '<td>'.$employee->employee_no.'</td>'.
                    '<td>'.$employee->last_name.'</td>'.
                    '<td>'.$employee->first_name.'</td>'.
                    '<td>'.$employee->middle_name.'</td>'.
                    '<td>'.$employee->nick_name.'</td>'.
                    '<td>'.$gender.'</td>'.
                    '<td>'.$employee->birthdate.'</td>'.
                    '<td>'.$employee->age.'</td>'.
                    '<td>'.$employee->birthplace.'</td>'.
                    '<td>'.$employee->province.'</td>'.
                    '<td>'.$employee->doMarriage.'</td>'.
                    '<td>'.$employee->height.'</td>'.
                    '<td>'.$employee->weight.'</td>'.
                    '<td>'.$employee->bloodtype.'</td>'.
                    '<td>'.$employee->nationality.'</td>'.
                    '<td>'.$employee->religion.'</td>'.
                    '<td>'.$employee->civil_stats.'</td>'.
                    '<td>'.$employee->sss_no.'</td>'.
                    '<td>'.$employee->tin_id.'</td>'.
                    '<td>'.$employee->phil_no.'</td>'.
                    '<td>'.$employee->pagibig_no.'</td>'.
                    '<td>'.$employee->address_no.'</td>'.
                    '<td>'.$employee->street_no.'</td>'.
                    '<td>'.$employee->brgy.'</td>'.
                    '<td>'.$employee->municipality.'</td>'.
                    '<td>'.$employee->cur_province.'</td>'.
                    '<td>'.$employee->region.'</td>'.
                    '<td>'.$employee->zipcode.'</td>'.
                    '<td>'.$employee->per_address_no.'</td>'.
                    '<td>'.$employee->per_street_no.'</td>'.
                    '<td>'.$employee->per_brgy.'</td>'.
                    '<td>'.$employee->per_municipality.'</td>'.
                    '<td>'.$employee->per_province.'</td>'.
                    '<td>'.$employee->per_region.'</td>'.
                    '<td>'.$employee->per_zipcode.'</td>'.
                    '<td>'.$employee->mobile_no.'</td>'.
                    '<td>'.$employee->tel_no.'</td>'.
                    '<td>'.$employee->email_ad.'</td>'.
                    '<td>'.$employee->guard_name.'</td>'.
                    '<td>'.$employee->guard_add.'</td>'.
                    '<td>'.$employee->guard_relat.'</td>'.
                    '<td>'.$employee->grd_mobile_no.'</td>'.
                    '<a href="/admin/employeemaintenance/'.$employee->id.'/edit" class="btn btn-primary btn-sm"><i class="fa fa-edit"></i>'.
                    '</tr>';
            }
            return Response($output);
        }
    }
}

我的搜索文本框

<input type="text" name="search" id="search" class="form-control">

【问题讨论】:

  • 这与问题无关,但请注意视图中的 $output,控制器不是放置 html 的地方。
  • 后端的响应是什么?
  • @CsabaGergely 先生,您是什么意思?
  • @Christophvh 如果我删除 $output 我无法搜索没有数据将被搜索
  • ajax 的响应(数据)

标签: javascript jquery ajax laravel laravel-5


【解决方案1】:

不要将 html 放在 laravel 控制器中,您可以将 $employees 作为数据返回,然后在您的 ajax 成功操作中添加 html

【讨论】:

    【解决方案2】:
    public function search(Request $request){
    if($request->ajax())
    {
    
        $employees = DB::table('employeefms')->where('last_name','LIKE','%'.$request->search.'%')
                                             ->orWhere('first_name','LIKE','%'.$request->search.'%')->get();
    
    
        if(!empty($employees))
        {
            return json_encode(array("msg"=>"success", "data"=>$employees));
        }
         return json_encode(array("msg"=>"error"));
    }
    

    }

    \\\\\\\\\\阿贾克斯

     $.ajax({
            type : 'get',
            url  : '{{ URL::to('admin/employeemaintenance/search') }}',
            data : {'search':$value},
            success:function(data){
               var data1 = jQuery.parseJSON(data); 
               if(data1.msg == "success"){
                    $.each(eval(data1.data), function(){
                          //html here
                        })
                 },
                 //no data found
    
            }
        });
    

    【讨论】:

    • 1.您不需要编码返回到 JSON。 Laravel 会自动生成。 2.如果你的后端返回json,你可以在AJAX代码中添加dataType: 'json'参数,不需要重新发明轮子解析JSON。
    • 是的,是的,我使用纯 PHP 工作允许我忘记 laravel 自动编码返回到 JSON
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    相关资源
    最近更新 更多