jQuery DataTables Ajax 调用无效

jQuery DataTables Ajax call is not working

我有多个数据表,它们都有自己的 ID。 现在这完全没问题,我遇到的问题是我的代码似乎能够完美地输出我的 console.log() 调用,但在我的 Network 选项卡中我没有没看到我的 ajax 电话?

我正在使用以下 jQuery 代码:

function DtAjax(type) {
    console.log("Type: "+type);
    if($('#data-table_' + type + '_wrapper').children().length == 0){
        console.log("True");
        $('#data-table_' + type).DataTable({
            "ajax": "<?php echo base_url('admin/emails/ajax/get'); ?>" + "/" + type
        });
        console.log("End function");
    }
}

$(document).ready(function(){
    DtAjax(1);
    $("li .changeContent").on('click', function (event) {
        event.preventDefault(); // Prevents going to a different URL

        // Content change
        $(".mailContent").hide('drop', 500).removeClass("active_div");
        $("." + $(this).attr('data-open')).delay(500).show('drop', 500).addClass("active_div");

        // button set new active
        $("#icon_nav_h > li.active").removeClass('active');
        $(this).parent().addClass('active');
    });
});

它正在记录 DtAjax 函数中的所有内容,我在 Network 选项卡中找不到 Ajax 调用的任何(明显)原因?

我强烈怀疑这是一个 cache 问题:

$('#data-table_' + type).DataTable({
  ajax: {
    url: "<?php echo base_url('admin/emails/ajax/get'); ?>" + "/" + type,
    cache: false
  }
});

cache默认为true

$(document).ready(function(){
    $.ajax({
        type: 'GET',
        url: 'http://localhost:8080/apiRequest/api/get',
        success:function(data){
            var result = JSON.parse(data);
            var len = Object.keys(result).length;
            var newLen = len - 1;
            for(i = 0; i <= newLen; i++){

            $( "#alldata" ).append( "<tr><td>"+result[i].fullname +"</td><td>"+result[i].email +"</td> <td>"+result[i].phone +"</td><td>"+result[i].service_type +"</td><td>"+result[i].vehicle_type +"</td> <td>"+result[i].date_time +"</td><td>"+result[i].pick_location +"</td> <td>"+result[i].drop_location +"</td> </tr>" );
        }
          $('#example').DataTable();
        }
    });
});

我的 ajax 工作不正常,我有一个控制台错误 Uncaught TypeError: Cannot read property 'length' of undefined

所以我添加了 success 函数来确保响应数据被接收并且有效。跟踪错误位置,我不知道为什么,但他们出于某种原因添加了检查 dataSrc 选项

我解决了这个问题只是添加 dataSrc 选项到 ajax 配置:

      ajax: {
        url: '/admin/api/modelType',

        // added onSuccess func to make sure the response data is valid
        success: (data) => {
          console.log('success', data)
        return data
        },

        dataSrc: ''
      }
}

更新 我发现 dataSrc 是元素位于响应数据中的键,例如,如果响应数据直接包含元素数组 [{element: '1'}] 所以保持空白 dataSrc:''

但如果响应正文附带: {content: [{element: '1'}]} 开始了

      ajax: {
        url: '/admin/api/modelType',
        dataSrc: 'content'
        }
      }