ajax 在 asp.net 中返回一个未定义的对象
Posted
技术标签:
【中文标题】ajax 在 asp.net 中返回一个未定义的对象【英文标题】:ajax is returning an undefined object in asp.net 【发布时间】:2019-02-09 20:31:20 【问题描述】:这是 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 成功后,没有错误或失败,但结果始终是控制台日志中未定义的对象
【问题讨论】:
【参考方案1】:console.log(result.success);
您确定“成功”是“结果”的成员吗? 也许尝试看看 console.log(result) 做了什么。
您可以从浏览器开始,向后调试。
打开您的开发者控制台(Chrome 为 F12),转到“网络”选项卡,然后让 Ajax 再次启动。
然后您很可能会注意到服务器回复了 200 响应,只是没有内容。
现在您开始并从返回的结果返回到您的查询。
我敢打赌,很可能返回了 0 行,并且您的循环没有填充 stringArr。 一旦您的查询返回一些行,您可能会遇到另一个错误,因为我对多维数组有点不确定。 看起来您可能正在尝试遍历与行数相等的列。
我敢肯定,一旦出现在 Code Behind 中的错误,您就会修复它们。
【讨论】:
谢谢,是的,它返回了 200,关于循环,编写的查询将只返回一列,因此数据表也将只有一列,我更改了它,现在是: stringArr.Add(dt.Rows[i].ToString());但它仍然存在同样的问题 您可以单步执行您的代码并检查 dt.Rows 的值吗?当你单步执行代码时,你能确认循环确实进入了吗?【参考方案2】:result
应该是数据库中的项目数组。 result.success
将始终未定义,您返回的对象上没有 .success
。
在另一个主题上,您需要处理您的 SQL 注入问题。 (https://en.wikipedia.org/wiki/SQL_injection)
【讨论】:
以上是关于ajax 在 asp.net 中返回一个未定义的对象的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Razor Pages JavaScript 文件返回未定义的错误
asp .net core - 自定义验证错误未显示在视图中