在mRender Datatable中调用Ajax Get函数

时间:2013-04-29 08:51:25

标签: ajax json datatables

我希望在Datatables mRender函数中调用一个ajax函数,该函数将使用来自当前ajax源的id从不同的ajax源获取数据。

为了正确看待这个问题,我有:

一个数据表中来自不同客户的请购单清单。

在这个列表中,我有一个客户端ID。我想让客户端名称显示在表格而不是客户端ID上。但是,客户端名称和其他客户端详细信息位于客户端表中,因此这些详细信息不在请购单json数据中。但我有客户端ID。

如何使用它在mrender函数中获取客户端名称? E.g

{"sTitle":"Client","mData":null,
    "mRender":function(data){
    //ajax function     
   }
},

提前谢谢你, 问候。

1 个答案:

答案 0 :(得分:0)

我不相信这是你应该如何处理你的数据。但是我也在我的mRender函数中使用了一个AJAX数据源,如下所述。

    $(document).ready(function(e){
       $('.products').dataTable({
           "bProcessing": true,
           "sAjaxSource":  window.location.protocol + "//" + window.location.hostname + '/product/getAll',
           "aoColumns": [
               { "sTitle": "Pid", "bVisible" : false},
               { "sTitle": "Pname" },
               { "sTitle": "Pprice" },
               {   "sTitle": "Pgroups",
                   "mRender" : function( data, type, full ){
                        console.log( data, type, full );
                        console.log(category.getAll());
                       return 'test';
                   }
               }
            ]
        });
    });

De self对象在selfinvoking函数中初始化。我使用它来防止函数在每次调用函数时远程加载数据。 它看起来像这样:

    (function(){
        if(typeof category === 'undefined'){
            category = {};
        }
        category.getAll = function(){
            if(typeof category.all === 'undefined'){
                $.ajax({
                    'type' : 'POST',
                    'async': false,
                    'url' : window.location.protocol + "//" + window.location.hostname + "/category/getAll",
                    'success' : function(data){
                        console.log(data);
                        category.all = data;
                    },
                    'error': function(a,b,c){
                        console.log("You shall not pass!",a,b,c);
                        alert('stop');
                    }
                });
            }
            return category.all;
        }
    })();