【问题标题】:How to push variable JavaScript into aodata datatable如何将变量 JavaScript 推送到 aodata 数据表中
【发布时间】:2017-01-14 05:17:54
【问题描述】:

我有一个名为 search_gen 的变量。该变量由 ajax 生成(代码如下)。

var search_gen;
$.ajax({
    type: "POST",
    url: link+module_name+'search_generator/'+module_active,
    dataType: "text",
    async: false,
    success: function(data){
        search_gen = data; //or something similar
    }
});

例如,这个变量将包含一个 json 数据(如下所示)

{"name":"room_type_name","value":$("#room_type_name").val()},{"name":"room_type_code","value":$("#room_type_code"
).val()}

如果我将 json 放在上面而不使用变量,它的工作示例代码如下

table=$('#table').dataTable({
  "sScrollY": "400px",
   "bFilter": false,
  "bProcessing": true,
    "bServerSide": true,
    "sServerMethod": "GET",
    "sAjaxSource": link+module_name+'populate_list/'+module_active,
    "iDisplayLength": 25,
    "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
    "columnDefs": [ {
           "targets": 0,
           "orderable": false
           },
           {
           "targets": -1,
           "orderable": false
           } ],
  "fnServerParams": function (aoData) {
    aoData.push({"name":"room_type_name","value":$("#room_type_name").val()},
                 {"name":"room_type_code","value":$("#room_type_code").val()})
                }
})

当我使用变量并放入括号aodata(seach_gen)(代码如下)

  table=$('#table').dataTable({
      "sScrollY": "400px",
       "bFilter": false,
      "bProcessing": true,
        "bServerSide": true,
        "sServerMethod": "GET",
        "sAjaxSource": link+module_name+'populate_list/'+module_active,
        "iDisplayLength": 25,
        "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
        "columnDefs": [ {
               "targets": 0,
               "orderable": false
               },
               {
               "targets": -1,
               "orderable": false
               } ],
      "fnServerParams": function (aoData) {
        aoData.push(search_gen)
}
    });

它显示这样的错误。 enter image description here

我的问题是 如何将我的变量 search_gen 传递给 aodata.push()

谢谢

【问题讨论】:

    标签: javascript json ajax datatable


    【解决方案1】:

    我假设您在调用.dataTable 之前不会等待第一个 AJAX 调用完成。试试下面的代码:

    var search_gen;
    $.ajax({
        type: "POST",
        url: link+module_name+'search_generator/'+module_active,
        dataType: "text",
        async: false,
        success: function(data){
            search_gen = data; //or something similar
        }
    }).done(function( data ) {
      table=$('#table').dataTable({
          "sScrollY": "400px",
           "bFilter": false,
          "bProcessing": true,
            "bServerSide": true,
            "sServerMethod": "GET",
            "sAjaxSource": link+module_name+'populate_list/'+module_active,
            "iDisplayLength": 25,
            "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
            "columnDefs": [ {
                   "targets": 0,
                   "orderable": false
                   },
                   {
                   "targets": -1,
                   "orderable": false
                   } ],
          "fnServerParams": function (aoData) {
            //aoData.push(search_gen)
            Array.prototype.push.apply(aoData,search_gen); // <<<<<<<<<<<< use this
          }
        });
    });
    

    或者,您可以在第一个$.ajaxsuccess 回调中调用.dataTable,并使用data 参数代替search_gen,例如aoData.push(data)

    编辑:

    根据您的评论,我认为search_gen 是一个数组,在这种情况下,您需要使用Array.prototype.push.apply(aoData,search_gen); 而不是aoData,.push(search_gen);。检查上面的代码。

    【讨论】:

    • 我已经尝试过您的建议,但仍然无法正常工作。并且仍然有相同的错误消息。
    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2022-11-06
    • 1970-01-01
    相关资源
    最近更新 更多