如何传递相同的请求或捕获对变量的响应?

时间:2015-05-13 13:52:04

标签: javascript jquery ajax datatables jquery-datatables

是否有可能在重新加载表时捕获DataTables的响应,或者是否可以传递DataTables请求通过自己的函数传递的所有数据(我的意思是过滤器)?

我需要由SSP类构建的SQL查询,然后在我自己的函数中使用它。我想用过滤后的数据做些什么,但我需要的数据比表中的要多得多。

我想到了这样的事情:

var myData = table.ajax("myFileWithModifiedSSP.php").load();

在这种情况下,它会传递所有参数,例如刷新表,但最后它会返回其他内容,而不是刷新dataTable。

我的第二个想法是只将带有ajax的参数发送到我的文件并执行我需要的操作。像这样:

function myFuncton(){
  $.ajax({
    url : "myURL.php",
    data : DATATABLES_PARAMETERS,
    success : function(data){
       //do what I need
    }
  });
}

修改

我之前没有提到我已初始化表,添加了一些自己的过滤器。现在一切都很完美。 我唯一需要的是以某种方式获取Datatables脚本发送的所有请求参数,并将它们用于其他内容。

例如,假设我有一个名为“export”的按钮,我使用我的过滤器和搜索引擎(来自DataTables)在我的表中过滤数据,然后我将结果输入到我的表中。 下一步是单击“导出”,现在我需要先前传递的参数(通过DataTables)在其他脚本中使用它们来处理数据。我只需要相同的参数,构建新的查询并对数据做一些事情。

2 个答案:

答案 0 :(得分:1)

您可以使用ajax.params(),它将DataTables提交的数据提供给上一个Ajax请求中的服务器。

见这个例子:

$("div:not(a)").wrapInner("<a href='#'></a>");

如果您使用var table = $('#example').DataTable({ ajax: "data.json", serverSide: true }); table.on('xhr', function () { var data = table.ajax.params(); alert('Search term was: ' + data.search.value); }); 返回的数据作为ajax.params() data属性的值,则可以获得可以提交到其他网址的相同请求,例如:

$.ajax()

答案 1 :(得分:0)

我认为你需要这样

$('#datatable_id').dataTable( {
"iDisplayLength": 50,
"ajax": function(data, callback, settings) {
    $.get(url, {
        param1: param1_value,
        param2: param2_value,
    }, function(res) {
        callback({ 
            data: response.data
        });
    });
}});

请注意我使用get作为ajax方法类型。您可以使用帖子或任何您想要的内容。