jQuery DataTables Ajax调用不起作用

时间:2015-06-12 08:14:41

标签: jquery ajax datatables

我有多个数据表,他们都有自己的ID。 现在这根本不是问题,我遇到的问题是我的代码似乎能够完美地输出我的console.log()调用,但在我的网络标签中我看不到我的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函数中的所有内容,我在网络选项卡中找不到Ajax调用的任何(显而易见的)原因?

3 个答案:

答案 0 :(得分:2)

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

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

cache默认为true

答案 1 :(得分:0)

Variant

答案 2 :(得分:0)

我的ajax也无法正常工作,并且出现一个控制台错误 Uncaught TypeError: Cannot read property 'length' of undefined

因此,我添加了成功函数,以确保接收到响应数据并使其有效。跟踪错误位置,我不知道为什么,但是由于某些原因,他们添加了 dataSrc 选项

的检查

我解决了这个问题,只需在Ajax配置中添加 dataSrc 选项:

      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 是元素位于响应数据中的键,例如,如果响应数据直接包含elements数组 [{element: '1'}],请保留空白 dataSrc:''

但如果响应主体带有: {content: [{element: '1'}]} 到这里

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