【问题标题】:data.length is not defineddata.length 未定义
【发布时间】:2019-06-09 16:19:06
【问题描述】:

我想获取数据的长度,当我尝试 console.log(data) 时,我得到了所有数据,但 console.log(data.length) 未定义。

function tampilesai(idsoal){
$.ajax({
    url: "soalesai/baca/"+idsoal,
    type: "POST",
    dataType: "JSON",
    success: function(data){
        console.log(data); //here <=================
        console.log(data.length); //here <=============

        var html = "";   
        for (i = 0; i < data.length; ++i) {     
            html += "<tr>" +
                "<td class='isitbl'>" + data[i].idsoal + "</td>" +
                "<td class='isitbl' style='width:20px;'>" + data[i].noesai + "</td>" +
                "<td class='isitbl' style='width:200px;'>" + data[i].matakuliah + "</td>" +
                "<td>" + data[i].isiesai + "</td>" +
                "<td class='isitbl'><button class='btn btn-danger btn-block' id='hapus' data[i]-id='" + data[i].idsoal + "'>" +
                "<span class='icon-trash'></span> Hapus</button>" +
                "</td>" +
                "</tr>";
        }
        $("tbody#tblesai").html(html);
    }
})

我需要 data.length 循环并填写我的表格。它的数据日志

{idesai: "90", idsoal: "1", noesai: "1", matakuliah: "1", isiesai: "<p>asdd</p>"}

这个图片浏览器

【问题讨论】:

  • 假设它不是this problem(我不希望它来自上面),我会说你看到的“所有数据”不是一个数组,它是一个具有属性的对象。如果没有关于数据是什么的最小示例,我们将无法为您提供帮助。
  • 对不起,我会编辑我的问题..
  • 如果您的数据是对象,那么只需使用Object.keys(data).length 来获取该对象的长度。
  • @SifatHaque - 更相关的建议可能是“......使用$.each(或Object.values)循环遍历对象的属性。”但实际上,我们需要查看数据以提供合理的建议,而不仅仅是让 OP 陷入困境......
  • 我使用了 Object.keys(data).length 并且我得到了 data.length ^^ 但现在问题.. data[i].idsoal 未定义

标签: javascript jquery


【解决方案1】:

如果您的数据是一个对象,那么您需要使用Object.keys(data).length 来获取数据对象的长度。

【讨论】:

    【解决方案2】:

    试试下面... 将结果数据转换为 JSON 对象。虽然返回类型被明确声明为 JSON,但某些版本的 jQuery 可能不会自动解析它。我在某些版本 2.x 中遇到了这样的错误

        var data = $.parseJSON(data);
        // console.log(data.length) *should return 1
        var html = "";   
        $.each(data, function(c) {     
            html += "<tr>" +
            "<td class='isitbl'>" + c.idsoal + "</td>" +
            "<td class='isitbl' style='width:20px;'>" + c.noesai + "</td>" +
            "<td class='isitbl' style='width:200px;'>" + c.matakuliah + "</td>" +
            "<td>" + c.isiesai + "</td>" +
            "<td class='isitbl'><button class='btn btn-danger btn-block' id='hapus' data[i]-id='" + c.idsoal + "'>" +
            "<span class='icon-trash'></span> Hapus</button>" +
            "</td>" +
            "</tr>";
        });
        $("tbody#tblesai").html(html);
    

    我没有测试过这个,但我认为它会给你一个替代的想法。

    【讨论】:

    • 当我使用 var data = $.parseJSON(data); 时数据为空..但是当我删除它时,表格显示并且数据仍然未定义..我现在用图像编辑了我的问题..
    • 我在控制台中看到的似乎不是格式良好的 JSON 对象。我期待像0:{idesai: "90"... 这样的东西可以确保数据被序列化。 1. 您是否对来自后端的数据进行了 JSON 编码?
    • 能否在控制台展开数据日志并上传图片?这样我们就可以看到完整的结构。 单击指向对象开头的扩展插入符
    【解决方案3】:

    完成..

    function tampilesai(idsoal){
    $.ajax({
        url: "soalesai/ambil/"+idsoal,
        type: "POST",
        dataType: "JSON",
        success: function(data){
            var html = "";
            for(i=0;i<data.length;i++){
                html += "<tr>" +
                    "<td class='isitbl'>" + data[i].idsoal + "</td>" +
                    "<td class='isitbl' style='width:20px;'>" + data[i].noesai + "</td>" +
                    "<td class='isitbl' style='width:200px;'>" + data[i].matakuliah + "</td>" +
                    "<td>" + data[i].isiesai + "</td>" +
                    "<td class='isitbl'><button class='btn btn-danger btn-block' id='hapus' data-id='" + data[i].idsoal + "'>" +
                    "<span class='icon-trash'></span> Hapus</button>" +
                    "</td>" +
                    "</tr>";
            }
            $("tbody#tblesai").html(html);
        }
    })
    

    }

    我改变了我的控制器

    public function ambil($idsoal){
        echo json_encode(
                $this->pertanyaan_model
                    ->ambilsoal($idsoal)->result());
    }
    

    还有我的模特..

    public function ambilsoal($idsoal){
        $query = $this->db
                    ->where("idsoal",$idsoal)
                    ->get("tblsoalesai");
        return $query;
    }
    

    它的作品,谢谢大家尝试帮助我..爱你

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多