我使用JSON.stringify
作为网络表单的文本框自动完成。我想做的是;通过从我的数据库中获取适当的城市名称来自动填充城市名称的文本框。自动完成功能在3个字母后生效。
问题是;建议的城市名称显示在一行中。例如,当我键入文本框(名为“MainContent_city”)时,它显示为:“Arequipa,Arecibo,Are Ostersund,Arezzo,Arendal”在一行中,作为一个字符串对象。我想要的是逐行显示所有这些城市名称。如;
阿雷基帕 阿雷西博 是厄斯特松德 阿雷佐 亚伦达
以下是我的javascript代码;
<script type="text/javascript">
$(function () {
$("#MainContent_city").autocomplete({
source: function (request, response) {
var param = { cityname: $('#MainContent_city').val() };
$.ajax({
url: "HotelAdd.aspx/GetCities",
data: JSON.stringify(param, null, param.length),
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data, function (item) {
return {
value: item
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
},
minLength: 3
});
});
</script>
这是我的“GetCities”方法的C#代码
[WebMethod]
public static List<string> GetCities(string cityname)
{
List<string> City = new List<string>();
string query = "SELECT name FROM City WHERE name LIKE @SearchText + '%'";
//Note: you can configure Connection string in web.config also.
SqlCommand cmd = new SqlCommand(query, connection);
cmd.Parameters.AddWithValue("@SearchText", cityname);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds2 = new DataSet();
adapter.Fill(ds2);
for(int i=0; i<ds2.Tables[0].Rows.Count; i++)
{
City.Add(ds2.Tables[0].Rows[i][0].ToString());
}
return City;
}