我正在对进行查询,该服务应该从数据库返回当前用户数据。在返回过程中,我得到了正确返回的数据,但是每次解析jSON时,我都会收到数据上的错误。我已经发了我的jQuery电话和WebService的回复。
我已经对它进行了强化,仍然无法解析data...it,似乎是在抱怨周围的大括号。
========================
ASMX伪
========================
[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"
}
]发布于 2015-06-25 20:32:50
正如depperm的评论中所述,您可能想要这样做
var obj=data.d[0];这将允许您通过以下方式访问它的值
obj.Mail或
obj.Name等。
我不知道为什么您的数据会带着外部brackets[]返回,如果JSON只有一个成员,请考虑删除[]。然后,您的当前代码将更有效地工作。
https://stackoverflow.com/questions/31060035
复制相似问题