Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError-d未定义_Javascript_Jquery - Fatal编程技术网

Javascript TypeError-d未定义

Javascript TypeError-d未定义,javascript,jquery,Javascript,Jquery,因此,我使用jQuery子行来显示父行中的一些数据。最初通过Ajax显示之后,我执行另一个Ajax请求并更改datatable中的数据。现在,如果我尝试展开它,它会显示行。但是,如果我再次尝试更改datatable中的数据,它会说d没有定义 这是我最初在datatable中加载数据时的代码 $.ajax({ url: "GetGridDetails?decodeID="+decoderFileSelected, type: "GET", data

因此,我使用jQuery子行来显示父行中的一些数据。最初通过Ajax显示之后,我执行另一个Ajax请求并更改datatable中的数据。现在,如果我尝试展开它,它会显示行。但是,如果我再次尝试更改datatable中的数据,它会说d没有定义

这是我最初在datatable中加载数据时的代码

$.ajax({ 
        url: "GetGridDetails?decodeID="+decoderFileSelected,
        type: "GET",
        dataType: 'json',
        success: function (myData) {
            if(myData != null){

                console.log("my data is:"+myData);

                    var table = $('#dashNumTable').DataTable({
                    destroy: true,
                    data: myData ,
                    "columns": [
                        {
                            "className":      'details-control',
                            "orderable":      false,
                            "data":           null,
                            "defaultContent": ''
                        },
                        { "data": "S" },
                        { "data": "W" },
                        { "data": "SA" },
                        { "data": "DDS" },
                        { "data": "AAS" },
                        { "data": "ABS" },
                        { "data": "BIN" },
                        { "data": "ET" }
                    ],
                    "order": [[1, 'asc']]
                });

             // Add event listener for opening and closing details
                $('#dashNumTable tbody').on('click', 'td.details-control', function () {
                    //alert("clicked plus!");
                    var tr = $(this).closest('tr');
                    var row = table.row(tr);
                    //var row = $('#dashNumTable').DataTable().row(tr);

                    if (row.child.isShown()) {
                        // This row is already open - close it
                        row.child.hide();
                        tr.removeClass('shown');
                    }
                    else {
                        // Open this row
                        row.child(format(row.data())).show();
                        tr.addClass('shown');
                    }
                  });

            }//if code ends..
            else{
                alert("There are no base numbers for the selected decoder ring file...");
            }

        } //end of success function...


    });
这将生成一个表,其中加号按钮用于展开,减号按钮用于收缩

激发ajax事件时刷新和添加新数据的代码

$(document).on("click", "#showHGAPartBtn", function(){
        // clear the eixisting table contents
        //alert("show button clicked!");
        var decoderFileSelected = $("#decoderFile").val();
        //$('#dashNumTable').empty();
        // var clearTable = $('#dashNumTable').DataTable();
        // clearTable.clear().draw();   
        //clearTable.rows().remove();
        $('#dashNumTable').DataTable().ajax.reload();
        //get the fresh data..
        $.ajax({ 
            url: "GetGridDetails?decodeID="+decoderFileSelected,
            type: "GET",
            dataType: 'json',
            success: function (data) {
                //if(myData != null){
                    //console.log("my data is:"+myData);
                    var table = $('#dashNumTable').DataTable({
                        // destroy: true,
                        cache: false,
                        processing: true,
                        data: data ,
                        "columns": [
                            {
                                "className":      'details-control',
                                "orderable":      false,
                                "data":           null,
                                "defaultContent": ''
                            },
                            { "data": "S" },
                            { "data": "W" },
                            { "data": "SA" },
                            { "data": "DDS" },
                            { "data": "AAS" },
                            { "data": "ABS" },
                            { "data": "BIN" },
                            { "data": "ET" }
                        ],
                        "order": [[1, 'asc']]
                    });

                 // Add event listener for opening and closing details
//                  $('#dashNumTable').on('click', 'tbody td.details-control', function () {
                    $('#dashNumTable').delegate('tbody td.details-control', 'click', function () {
                        //alert("clicked plus!");
                        var tr = $(this).closest('tr');
                        //table.ajax.reload();
                        var row = table.row(tr);
//                      alert("Row is :"+row);
                        //var row = $('#dashNumTable').DataTable().row(tr);
                        console.log(tr);
                        console.log(row);
                        console.log(row.child.isShown());
                        if (row.child.isShown()) {
                            // This row is already open - close it
                            row.child.hide();
                            tr.removeClass('shown');
                        }
                        else {
                            // Open this row
                            row.child(format(row.data())).show();
                            tr.addClass('shown');
                        }
                      });

           //   }//if code ends..
            //  else{
                //  alert("There are no base numbers for the selected decoder ring file...");
                //}

            },
            //end of success function...
            error: function(response){
                console.log(response);
            }

        });// end of AJAX call
下面是format函数,它第二次返回错误

函数格式(d){
//警惕(d.stringify);
//警报(JSON.stringify(d));
var rowSelectedBaseNumbers=d.HGA_BASE_NUMBERS;
//`d`是该行的原始数据对象
//警报(RowselectedBaseNumber);
var selectedBaseNumbersDropdown=$(“#selBaseNumbers”).val();
var initial=“仪表盘编号头”;
var finalReturn=“”;
var endHeaders=“”;
var=”;
//现在迭代基数
对于(变量i=0;i
返回的错误是

typeerror-d未定义


在格式化函数中设置故障保护方案,以便在没有可用数据时,代码将不会执行

function format (d) {
  if (d) { return null; }
  ...
}
你确定密码正确吗

行数据()

实际返回一个值?=>试着弄清楚


还有,d是什么?尽量使代码易于阅读。我们开发者是作家。不是针对计算机,而是针对我们的同事,他们有时需要阅读我们的代码来理解我们试图完成的任务。

console.log(row.data())
显示了什么?在您的表中的某个地方,
row.data()
返回
未定义的
,因此没有给出函数
fortmat()
要使用的
d
。@mplungjan正在尝试查找它。似乎控件甚至没有进入if/else块。@MáttheusSpoo知道为什么会发生吗?或者其他更好的方法来删除表中显示的所有内容,并使用ajax显示新行?@mplungjan这是我第一次点击ajax调用时的输出[object object],第二次点击
undefined
。确保代码的故障安全性总是很好的,但这只是本例中实际潜在问题的一个解决方案。@LaurensMäkel,我建议首先检查row.data()中的值是否存在。
function format (d) {
  if (d) { return null; }
  ...
}