下面是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是否成功之后,没有错误或失败,但结果始终是控制台日志中的未定义对象
发布于 2018-09-05 03:30:21
console.log(result.success);
你确定“成功”是“结果”的成员吗?也许可以试着看看console.log(result)能做什么。
您可以从浏览器开始并向后调试。
打开您的开发人员控制台(chrome的F12),转到网络选项卡,然后让Ajax再次启动。
然后,您很可能会注意到,服务器的响应是200,没有任何内容。
现在,您开始从返回的结果返回到查询。
我敢打赌,很可能返回了0行,并且您的循环没有填充stringArr。当您的查询返回一些行时,您可能会得到另一个错误,因为我对多维数组有点不确定。看起来您可能正在尝试循环遍历的列数与行数相同。
我确信,一旦代码开始显示,您将修复代码中发生的错误。
发布于 2018-09-05 03:31:47
result
应该是数据库中的项的数组。result.success
将始终是未定义的,返回的对象上没有.success
。
在另一个主题中,您将需要处理SQL注入问题。(https://en.wikipedia.org/wiki/SQL_injection)
https://stackoverflow.com/questions/52172524
复制相似问题