#c# #jquery #asp.net #ajax #json
#c# #jquery #asp.net #ajax #json
Вопрос:
Итак, у меня есть это:
{"d":[{"__type":"Like","Id":345,"Sender":"JohnSmith","SourceId":338,"DateTime":"/Date(1321057654000)/","FromStream":true}]}
И это:
function LikesSuccess(result, userContext, methodName) {
for (var key in result) {
alert(key.Sender);
}
}
JSON возвращает массив типа «Like» со свойствами, показанными выше.
Есть ли другой способ получить «JohnSmith» от отправителя? Потому что это возвращает undefined.
Спасибо.
Ответ №1:
Попробуйте
for (var i = 0; i < result.d.length; i ) {
alert(result.d[i].Sender);
}
потому что ваш объект JSON имеет ключ d
. >> jsfiddle
Комментарии:
1. Да, это решает проблему. Один вопрос, откуда взялось это «d»? Выполняет ASP.NET автоматически назначать его? Я нигде не указывал это в своем методе сценариев.
2. Это было изменение, добавленное в .NET 3.5 по соображениям безопасности. Смотрите encosia.com/a-breaking-change-between-versions-of-aspnet-ajax
3. @user1027620: Ознакомьтесь с этой статьей от Encosia о соображениях безопасности, стоящих за инкапсуляцией Microsoft возвращаемых объектов в свойство d.
Ответ №2:
используйте jquery
var obj = $.parseJSON(str)
Затем вы получаете объект js
Комментарии:
1. Его пример уже является объектом, а не строкой, которую нужно проанализировать.
Ответ №3:
Попробуйте этот код :
function LikesSuccess(result, userContext, methodName) {
for (var property in result.Properties) {
alert(result[property]);
}
}
Я помню, что использовал нечто подобное, когда работал с Asp.Net Ajax, веб-сервисы. Однако не уверен в правильном синтаксисе.