在我的静态Web方法中,我使用从数据库中选择的Bankid和Bankname填充字典。 Id转到Key,Value转到value部分。所以我的字典中大约有20个键值对。然后我将这个字典返回到我的ajax调用:
$.ajax({
type: 'POST',
url: 'AJAX.aspx/Banks',
data: '',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data)
{
$.each(data.d, function ()
{
$("#testDiv").append(this.Key + " " +this.Value + "<br/>");
});
},
error: function (x, e)
{
alert("The call to the server side failed. " + x.responseText);
}
});
在上面的例子中,我获得了20行undefined undefined。但是,如果我从中删除.Key和.Value,我只得到值,所以银行名称。我需要键和值,因为我将使用它们填充select元素 - 键值和内部html值。 如果你想看到我的网络方法,这里是:
[WebMethod]
public static Dictionary<string, string> Banks()
{
Dictionary<string, string> dict = new Dictionary<string, string>();
DatabaseProvider provider = GetDatabaseProvider();
provider.AddOutParameter("V_CUR", OracleType.RefCursor);
DataTable dt=provider.SelectDataTable("AGAPUS.PAYMENT.SP_BANKS", CommandType.StoredProcedure);
foreach (DataRow row in dt.Rows)
{
dict.Add(row["PAYMENTTYPE"].ToString(), row["PAYMENTTYPEID"].ToString());
}
return dict;
}
答案 0 :(得分:1)
看起来更像是关于jQuery的问题。也就是说,尝试将您的成功功能更改为:
success: function (data)
{
$.each(data.d, function ( key, value )
{
$("#testDiv").append(key + " " + value + "<br/>");
});
}
在评估地图时,键和值作为参数传递给函数。