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'
}
}
我有多个数据表,它们都有自己的 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'
}
}