2017-10-14 7 views
-2

Web APIからのデータをテーブルにフェッチしているときに、Uncaught TypeError:未定義の 'indexOf'プロパティを読み取ることができません。 Web APIがチェックして、データを返します。Uncaught TypeError:未定義の 'indexOf'プロパティを読み取ることができません

$("#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

そして、 '未定義である' $( "#のdatatable1")。htmlの()ように思われます。 *定義する必要がありますか?その要素は存在しますか? – David

+0

ごめんそのjqueryのテーブル: Prakash

+0

@Prakash:見て、エラーがかなり明確です。その要素はあなたのページに見つかりません。あなたが他に例証することができない限り、それは問題の説明です。 – David

答えて

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はまだその作業(datatable1のIDでテーブルを生成することとなっている部分)が終了していません。

これを解決するには、GenerateTableが完了するまでif文の実行を遅らせる必要があります。 GenerateTableは、おそらく表は、HTMLに挿入されたことを示すために、コールバックのいくつかの形態(例えばonsuccess)を有しています。