Получение JSON из веб-службы .NET с помощью JQuery - PullRequest
0 голосов
/ 28 сентября 2010

Я работаю с модулем FullCalendar (отлично, кстати), и у меня возникают проблемы с заполнением событий из базы данных. Я получаю строку JSON, созданную веб-службой C #. Однако, когда я пытаюсь разобрать его и распечатать тестовые оповещения, я получаю только «неопределенное».

Моя строка ответа выглядит так в Firebug:

{d="[{"ScheduleRecId":9,"EmployeeScheduled":"3","TimeStart":"\/Date(1285601677000)\/","TimeEnd":"\/Date(1285601677000)\/","UpdatedBy":"4","LastUpdate":"\/Date(1285601677000)\/","Started":true,"Finished":false}]"}

, который выглядит как массив, но когда я пытаюсь получить к нему доступ из JQuery, например:

 success: function(doc) {
              alert(doc)    //echos "Object oject"
              alert(doc[0]) //echos "undefined"
              alert(doc.EmployeeScheduled) //echos "null"
 }

Я также попытался использовать JSON.parse и eval () без особой удачи. Как я могу получить доступ к свойствам этого объекта?

ОБНОВЛЕНИЕ: После ответа Ника я решил попробовать alert(doc.d[0]);, который повторил [

Я заметил, что если я попытаюсь alert(doc.d[5]);, я получу h, что заставит меня поверить, что doc.d выглядит как массив символов. Я полагаю, я мог бы прочитать и проанализировать его, но разве не должно быть более чистого способа доступа к свойствам?

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Поскольку это ASP.NET 3.5 или выше, похоже, вам нужно свойство d, например:

success: function(doc) {
    alert(doc.d[0].EmployeeScheduled);
}

Это потому, что корневой объект имеет одно свойство, dкоторый является массивом объектов ... поэтому используйте [0], чтобы получить первую запись, затем .EmployeeScheduled, чтобы получить это свойство.

0 голосов
/ 29 сентября 2010

В итоге получилось так:

 success: function(obj) {

      var schedules = (eval(obj.d));

тогда я мог бы захватить свойства, как это:

var event = {
                id: schedules[0].ScheduleRecId,
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...