繁体   English   中英

JavaScript运行时错误:无法获取未定义或空引用的属性“ length”

[英]JavaScript runtime error: Unable to get property 'length' of undefined or null reference

抛出错误,显示d是未定义的。 全文为:JavaScript运行时错误:无法获取未定义或空引用的属性“ length”。 我不明白为什么它不显示数据。 在数据库中它有两个记录。

这是HTMl,一个按钮

的HTML

<h3>Load Data</h3>
    <input id="btnLoadData" type="button" value="Load Database" onclick="GetCompanies()" />
    <div id="UpdatePanel">

    </div>

这是ajax电话

用jQuery进行Ajax调用

function GetCompanies() {
            $("#UpdatePanel").html("<div style='text-align:center'>Please Wait</div>")
            $.ajax({
                type: "POST",
                url: "WebForm1.aspx/GetCompanies",
                data: "{}",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: onSuccess,
                error: onError

            });
        }

        function onSuccess(data) {
            var tableContent = "<table border='0'>" +
                "<tr>" +
                "<td>Rank</td>" +
                "<td>Company Name</td>" +
                "<td>Revenue</td>" +
                "<td>Industry</td>" +
                "</tr>";
            for (var i = 0; i < data.d.length; i++) { //d is undefined 
                tableContent+= 
                    "<tr>" +
                "<td>"+data.d[i].Rank+"</td>" +
                "<td>"+data.d[i].CompanyName+"</td>" +
                "<td>"+data.d[i].Revenue+"</td>" +
                "<td>" + data.d[i].Industry + "</td>" +
                "</tr>";
            }
            tableContent += "</table>";
            $("#UpdatePanel").html(tableContent);
        }

        function onError(data) {

        }

后端代码

[WebMethod]
        [ScriptMethod(ResponseFormat=ResponseFormat.Json)]
        public static List<TopCompany> GetCompanies()
        {
            List<TopCompany> allCompany = new List<TopCompany>();
            using (MyDatabaseEntities db = new MyDatabaseEntities())
            {
                allCompany = db.TopCompanies.ToList();
            }
            return allCompany;
         }

需要协助以找出错误。

通过评论以下语句来修复

 // settings.AutoRedirectMode = RedirectMode.Permanent;

在App_Start / RouteConfig.cs中

function GetCompanies() {
        $("#UpdatePanel").html("<div style='text-align:center'>Please Wait</div>")
        $.ajax({
            type: "POST",
            url: "WebForm1.aspx/GetCompanies",
            data: "{}",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: onSuccess,
            error: onError

        });
    }

    function onSuccess(data) {
        var tableContent = "<table border='0'>" +
            "<tr>" +
            "<td>Rank</td>" +
            "<td>Company Name</td>" +
            "<td>Revenue</td>" +
            "<td>Industry</td>" +
            "</tr>";
        for (var i = 0; i < data.length; i++) { //d is undefined 
            tableContent+= 
                "<tr>" +
            "<td>"+data[i].Rank+"</td>" +
            "<td>"+data[i].CompanyName+"</td>" +
            "<td>"+data[i].Revenue+"</td>" +
            "<td>" + data[i].Industry + "</td>" +
            "</tr>";
        }
        tableContent += "</table>";
        $("#UpdatePanel").html(tableContent);
    }

    function onError(data) {

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM