ajax成功响应后重新加载数据表

时间:2017-05-29 14:36:35

标签: php jquery datatable

我正在使用数据表进行列表。现在我想根据几个定义过滤器来过滤一些记录。

我使用ajax完成了过滤器我正在基于过滤器创建一个新的响应并替换数据表的响应表,一切正常。

但问题是在完成所有数据表默认搜索框并且排序不起作用之后。见下面的代码。

Jquery代码:

//Search data from quarter 
$("body").delegate("#period","change",function(){
    var customer_id = $("#customer").val();
    var quarter = $("#period").val();
    var _token = $('input[name="_token"]').val();
    //if(quarter !=''){
        $("#ajax_loader_content").text("Please wait...");
        $("#ajax_loader").removeClass("hide");
        $.ajax({
            url: "{{ url('/appraisal-search') }}", // routing
            type: "POST",
            data: {_token: _token, customer_id: customer_id, quarter: quarter },
            success: function(res) {
                $("#ajax_loader").addClass("hide");
                if(res == 0){
                    $(".ajax-hide").addClass('hide');
                    $(".ajax-show").removeClass('hide');
                }else{
                    $(".ajax-hide").removeClass('hide');
                    $(".ajax-show").addClass('hide');
                    $("#data_table_tbody").html(res);
                    SITE.TableDropdownMenu();
                }
            },
            error: function(res) {
                console.log('Error:' + res);
            }
        });
}); 

PHP代码:

public function searchAppraisal() {
    if(WebUsers::isBusinessAnalyst()){
        try {
            $customer = $this->_request->customer_id;
            $quarter = $this->_request->quarter;
            if (!empty($customer) || !empty($quarter)) {
                $data['appraisals'] = Appraisal::getSearchedAppraisals($customer, $quarter);
                if(count($data['appraisals'])>0){
                    echo view('analyst.appraisal.ajax_search_appraisal', $data);
                }else{
                    echo 0;
                }
            }
        } catch (Exception $ex) {
            $this->_response['error'][] = $ex->getMessage();
            return response(Helpers::makeAjaxResponse(false, $this->_response));
        }
    }else{
        return response('Unauthorized.', 401);
    }
}

以前有人面对这个吗?成功ajax调用后如何重新加载网格。

1 个答案:

答案 0 :(得分:0)

更新dataTable后,在success函数的末尾,您需要使用新信息重绘它:yourTable.draw();