我收到错误 - 未捕获的TypeError:无法读取未定义的属性'indexOf'

时间:2017-10-14 11:37:38

标签: jquery asp.net

在将数据从web api提取到表中时,我收到一条错误,即Uncaught TypeError:无法读取未定义的属性'indexOf'。 web api我已经检查过,它返回了数据。

$("#divTable").empty();

$('#divTable').GenerateTable({
     tableID: "datatable1",
     //order: [[ 1, 'asc' ]],
     sourceDataUrl: ApiPath + "Dashboard/GetRegulatoryTable?Type=" + type + "&Subject=" + subject + "&Month=" + month + "&Year=" + year,
     autoColHeader: {
         enable: "false",
         colHead: ["Update ID", "Month", "Year", "Subject", "Description", "Document Path", "Created By", "Created Date"]
     },
     disableColindex: "[]",
});

if ($("#datatable1").html().indexOf("No data available", 1) > 1) { //here its throwing an error
    swal("", "No Data Available", "warning");
    $("#divTable").empty();
}
else {
    $(".cutsdata").DataTable();

    $('#btnDownload').show();
}

1 个答案:

答案 0 :(得分:0)

$('#divTable').GenerateTable({
     tableID: "datatable1",
     //order: [[ 1, 'asc' ]],
     sourceDataUrl: ApiPath + "Dashboard/GetRegulatoryTable?Type=" + type + "&Subject=" + subject + "&Month=" + month + "&Year=" + year,
     autoColHeader: {
         enable: "false",
         colHead: ["Update ID", "Month", "Year", "Subject", "Description", "Document Path", "Created By", "Created Date"]
     },
     disableColindex: "[]",
});

在HTML中生成一个表 - 但它几乎肯定会以异步方式生成(假设提到sourceDataUrl)。

因此,当:

if ($("#datatable1").html().indexOf("No data available", 1) > 1) { //here its throwing an error

执行,GenerateTable尚未完成其工作(其中一部分是生成ID为datatable1的表)。

要解决此问题,您需要延迟执行if语句,直到GenerateTable完成其工作。 GenerateTable可能有某种形式的回调(例如onsuccess),表示该表已插入HTML中。