首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ajax在asp.net中返回一个未定义的对象

ajax在asp.net中返回一个未定义的对象
EN

Stack Overflow用户
提问于 2018-09-05 03:02:14
回答 2查看 108关注 0票数 0

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

代码语言:javascript
运行
复制
             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对象的结果的表

代码语言:javascript
运行
复制
       $(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是否成功之后,没有错误或失败,但结果始终是控制台日志中的未定义对象

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-05 03:30:21

代码语言:javascript
运行
复制
console.log(result.success);

你确定“成功”是“结果”的成员吗?也许可以试着看看console.log(result)能做什么。

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

打开您的开发人员控制台(chrome的F12),转到网络选项卡,然后让Ajax再次启动。

然后,您很可能会注意到,服务器的响应是200,没有任何内容。

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

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

我确信,一旦代码开始显示,您将修复代码中发生的错误。

票数 1
EN

Stack Overflow用户

发布于 2018-09-05 03:31:47

result应该是数据库中的项的数组。result.success将始终是未定义的,返回的对象上没有.success

在另一个主题中,您将需要处理SQL注入问题。(https://en.wikipedia.org/wiki/SQL_injection)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52172524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档