当Ajax成功为空或为null时,显示NO数据
本文关键字:显示 NO 数据 Ajax 成功 null | 更新日期: 2023-09-27 18:26:47
我有一个WebMethod,它用一些初始值填充JQuery DataTable。我有一个下拉列表,它调用WebMethod并尝试用不同的值填充它。我的问题是,如果JSON数据为null(或"),那么我会得到JSON.parse:意外的数据结尾。
现在,我可以使用if(msg.d.length !- '' { build the table} )
检查对象的长度。但是,如果长度为null("),那么我永远不会进入构建表,因此无法表示没有数据/没有记录。
如果JSON字符串/对象为null("),我如何确保DataTables仍然显示"未找到记录"等。。。?
$('#ddBICS').change(function (e) {
var val = $('#dd option:selected').text();
msgDateDetail(val);
});
function msgDateDetail(value) {
$.ajax({
type: "POST",
url: "Default.aspx/MsgDateDetail",
cache: false,
data: JSON.stringify({ searchValue: value }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var data = JSON.parse(msg.d);
var asInitVals = new Array();
otblMsgDateDetail = $("#tblMsgDateDetail").dataTable({
"sDom": "<'row-fluid'<'span6'T><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
"oTableTools": {
"aButtons": [
"copy",
"print",
{
"sExtends": "collection",
"sButtonText": 'Save <span class="caret" />',
"aButtons": ["csv", "xls", "pdf"]
}
]
},
"aaData": data
})
}
});
}
msg可能为null或未定义,只要检查变量就会知道这一点。此外,由于您使用的是JQuery,因此可以使用isArray JQuery方法检查d是否为数组。
if(msg && msg.d && $.isArray(msg.d) && msg.d.length > 0) {
// build the table
}else{
// data is empty
}
在上述方法中,您将执行以下操作。
function msgDateDetail(value) {
$('#tblMsgDate
$.ajax({
type: "POST",
url: "Default.aspx/MsgDateDetail",
cache: false,
data: JSON.stringify({ searchValue: value }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var asInitVals = new Array();
var data = (msg && msg.d && $.isArray(msg.d))? msg.d : new Array();
otblMsgDateDetail = $("#tblMsgDateDetail").dataTable({
"sDom": "<'row-fluid'<'span6'T><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
"oTableTools": {
"aButtons": [
"copy",
"print",
{
"sExtends": "collection",
"sButtonText": 'Save <span class="caret" />',
"aButtons": ["csv", "xls", "pdf"]
}
]
},
"aaData": data
})
}
});
}
jquery方法的文档位于jquery.com上http://api.jquery.com/jQuery.isArray/
为此,请确保Default.aspx/MsgDateDetail为内容类型返回application/json。要在aspx文件中执行此操作,请执行以下操作:
Response.ContentType = "application/json"
您必须在执行任何响应之前执行此操作。编写
您应该将长度设置为这样的
if(msg.d.length !=0) { // Try this
//-- build the table
}