我正在查询应该从数据库返回当前用户数据的ASMX Web服务。在返回中我正确地返回数据,但每次我解析jSON;我收到了数据错误。 我已经发布了我的jQuery Call和WebService的返回。
我已经把它强化了,仍然无法解析数据......它似乎在抱怨周围的大括号。
========================
ASMX PSEUDO
========================
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public String GetLDAPUser(string sam)
{
ArrayList objs = new ArrayList();
string sql = @"***SELECT USERS FROM AD THROUGH OPENQUERY***";
using (SqlConnection connection = new SqlConnection(VMDATA))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
//Parameters
cmd.Parameters.AddWithValue("@sam", sam);
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
objs.Add(new
{
Name = reader["Name"],
Login = reader["samAccountName"],
Mail = reader["Mail"],
DistinguishedName = reader["distinguishedName"],
DisplayName = reader["displayName"],
GivenName = reader["givenName"]
});
}
}
}
}
return JsonConvert.SerializeObject(objs);
}
========================
jQuery CALL
========================
$(document).ready(function () {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/apps/Webservices/wsUsers.asmx/GetUser",
data: "{'user': 'jwg1'}",
dataType: "json",
success: function (data) {
var obj = data.d;
console.log(obj);
}
});
});
========================
JSON数据
========================
[
{
"Mail": "joe.garrett@rineco.com",
"samAccountName": "jwg1",
"distinguishedName": "CN=Joe Garrett,OU=obfuscated,DC=com",
"givenName": "Joe",
"displayName": "Joe Garrett",
"Name": "Joe Garrett"
}
]
答案 0 :(得分:0)
正如depperm的评论所述,你可能想要做
var obj=data.d[0];
这将允许您通过执行
来访问其值obj.Mail
或
obj.Name
等
我不确定为什么你的数据会带有out括号[],如果JSON只有1个成员,请考虑删除[]。那么您当前的代码将更有效地工作。