我在ASP.net中编写了一个Web方法,它的输出是从Sql server数据库读取的城市ArrayList。 在客户端使用Jquery调用此webmethod。 但我不知道如何使用jquery读取数组列表的每个项目。例如每个城市和它的id等同。 以下是我的Webmethod:
public ArrayList showcity(int s)
{
ArrayList list = new ArrayList();
String strConnString = ConfigurationManager
.ConnectionStrings["ConnectionCS"].ConnectionString;
String strQuery = "select ID, City from tbl_city where stateid=@s";
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@s", s);
cmd.CommandText = strQuery;
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
list.Add(new ListItem(
sdr["City"].ToString(),
sdr["ID"].ToString()
));
}
con.Close();
return list;
}
}
这是我的客户代码:
function showcity() {
$.ajax(
{ url: "../AjaxServices/StateCity.asmx/showcity",
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "POST",
data: '{s: ' + $('#<%=DpState.ClientID%>').val() + '}',
success: function(data) {
***// what should I write here to access every item separately***
},
error: function() { alert("Error"); }
})
}
如果我使用alert(data.d)
我会得到[对象] [对象] [对象] [对象],.....
答案 0 :(得分:2)
您需要创建一个实际类型并返回该类型的数组。因此,创建一个City类,将其标记为可序列化,在循环中构建List<City>
,然后返回.ToArray()。您的网络方法的返回类型应为City []
答案 1 :(得分:0)
而不是返回ArrayList
,最好返回一个具有二维的数组。
答案 2 :(得分:0)
我自己找到了一个解决方案,所以我在这里分享一下,请注意Value
和Text
他们是区分大小写的
success: function(data) {
$.each(data.d, function() {
alert(this['Value'] + ':' + this['Text']);
})
}