首页 > 解决方案 > ajax 在 asp.net 中返回一个未定义的对象

问题描述

这是 c# 中的 getter 方法,它通过查询获取用户输入的单词的含义,然后将它们填充到数据表中,然后将通过循环填充字符串列表,该循环将包含最后转换的含义和返回为 json 字符串:

             public static string  getmeanings(string word)
         {
    string cs = 
            ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

                        List<string> stringArr = new List<string>();

    using (SqlConnection con = new SqlConnection(cs))
    {

        con.Open();
        using (SqlDataAdapter rdr = new SqlDataAdapter("SELECT MEANING FROM WORDS T1 , MEANINGS T2 WHERE WORD LIKE N'" + word + "'AND T1.WORD_ID = T2.WORD_ID", con))
        {
            using (DataTable dt = new DataTable())
            {

                rdr.Fill(dt);
                for(int i =1;i< dt.Rows.Count; i++)
                {
                    stringArr.Add(dt.Rows[0][i].ToString());

                }

            }

            string json1 = JsonConvert.SerializeObject( stringArr);
            return json1;

        }
    }
}

这是 ajax/jquery 代码:在 keyup 上,ajax 将调用 getter 方法,成功时它将更改包含返回 json 对象结果的表

       $(function () {

        $("#text1").keyup( function () {
            var word = $("#text1").val();
            $.ajax({
                type: "GET",
                url: "toshow.aspx/getmeanings",
                data: { word: word },
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) {




                $(".tablefill").append("<table><tr><td>meaning id</td><td>meaning</td></tr><tr><td>"+result[0]+"</td></tr></table>");
                    console.log(result);
                }, error: function (err) {
                    alert('ERROR');

                }
            });
        });
    });

在我测试代码 ajax 成功后,没有错误或失败,但结果始终是控制台日志中未定义的对象

标签: jqueryasp.netjsonajaxwebforms

解决方案


console.log(result.success);

您确定“成功”是“结果”的成员吗?也许尝试看看 console.log(result) 做了什么。

您可以从浏览器开始并向后调试。

打开您的开发者控制台(Chrome 的 F12),转到 Network 选项卡,然后让 Ajax 再次启动。

然后你很可能会注意到服务器回复了 200 响应,只是没有内容。

现在您开始并从返回的结果返回到您的查询。

我敢打赌,很可能返回了 0 行,并且您的循环没有填充 stringArr。一旦您的查询返回一些行,您可能会遇到另一个错误,因为我对多维数组有点不确定。看起来您可能正在尝试遍历相同数量的列,因为您有行。

我敢肯定,一旦它们开始出现,您将修复代码隐藏中出现的错误。


推荐阅读