如何根据containdata1/2/3的判断条件动态选择Datatable的ajax请求url
实现可行性说明
该需求完全可以实现,你现有代码的错误原因是不支持在对象字面量的初始化结构中直接写if条件语句,不符合JavaScript基础语法规则。
前置规则确认
你需要先明确3个参数的匹配优先级,以下实现默认按照containdata1 > containdata2 > containdata3的优先级取值,若你实际优先级不同,调整判断顺序即可。
正确实现代码
$(document).ready(function() { var $table = $('#datatable1'); // 预先计算请求地址 let targetUrl = ''; if (containdata1) { targetUrl = "/api/dunapi/" + containdata1; } else if (containdata2) { targetUrl = "/api/dunapi/" + containdata2; } else if (containdata3) { targetUrl = "/api/dunapi/" + containdata3; } // 初始化Datatable时直接传入提前计算好的配置 $table.DataTable({ "columnDefs": [ {"className": "dt-center", "targets": "_all"} ], ajax: { url: targetUrl, type: 'GET' } // 其余Datatable配置可继续在此处添加 }) })
简化写法(ES6+支持)
如果你的运行环境支持ES6+语法,也可以用空值合并运算符简化url计算逻辑:
const targetParam = containdata1 ?? containdata2 ?? containdata3; const targetUrl = `/api/dunapi/${targetParam}`;
内容的提问来源于stack exchange,提问作者Baharudin Jx
相关产品推荐
相关产品推荐

