这是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代码:在键入键时,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成功之后,没有错误或失败,但结果始终是控制台日志中的未定义对象
答案 0 :(得分:0)
console.log(result.success);
您确定“成功”是“结果”的成员吗? 也许尝试看看console.log(result)的作用。
您可以从浏览器开始并向后调试。
打开开发者控制台(Chrome浏览器为F12),转到“网络”标签,然后再次启动Ajax。
然后,您很可能会注意到服务器回复了200,只是没有内容。
现在,您可以开始并将返回的结果返回查询。
我敢打赌,很可能返回了0行,并且您的循环没有填充stringArr。 一旦查询返回一些行,您可能会遇到另一个错误,因为我对多维数组不确定。 看起来您可能正在尝试遍历与行数相等的列。
我敢肯定,一旦它们显示出来,您就会解决代码隐藏中出现的错误。
答案 1 :(得分:0)
isinstance
应该是数据库中的一组项目。 result
始终是不确定的,返回的对象上没有result.success
。
在另一个主题上,您需要解决SQL注入问题。 (https://en.wikipedia.org/wiki/SQL_injection)