我有多个数据表,他们都有自己的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调用的任何(显而易见的)原因?
答案 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'
}
}