2010-09-20 2 views
1

Я пытаюсь заставить это работать уже несколько недель, но все безрезультатно. Я уверен, что мой код должен проваливаться через что-то довольно маленькое и глупое, но, пробовав несколько разных подходов, я начинаю действительно бороться с тем, что может быть проблемой. Кто-нибудь еще смог получить Календарь недели jQuery (http://github.com/themouette/jquery-week-calendar), работающий с HTTPHandler, возвращающим JSON?Использование HTTPHandler в C# .NET 3.5 с календарем недели jQuery

Я пробовал:

  1. Hard-кодирование JSON, чтобы выйти из обработчика в виде строки (например, "события: [{} и т.д.]")
  2. Попытка с или без первоначального "события:"
  3. Использование LINQ для извлечения данных, а затем сериализации с JavaScriptSerializer
  4. Использование DataContractJsonSerializer вместо
  5. Создание метода ToJSON с выше
  6. Использование $ .getJSON для извлечения данных
  7. Использование $ .get вместо
  8. Использование $ .ajax с «асинхронном = ложным»
  9. Ввод вызова данных в функции, затем вызывая функцию:
 
    data: function(start, end, callback) { 
     callback(getData()); 
    } 

Ничего из того, что похоже на работу. Я даже попытался запустить вызов данных до календарного кода, используя $ .get, $ getJSON и $ .ajax, как:

 
    $.getJSON('/content/handlers/GetScheduledAppointments.ashx', function(json) { 
     $calendar.weekCalendar({ 
      . 
      . 
      . 
      data: json 
     }); 
    }); 

я пробовал так много различных способов, которые я не могу размещаю каждый пример кода, который терпит неудачу, но если кто-нибудь может мне помочь, я буду более чем счастлив опубликовать некоторые примеры, если это необходимо.

Неужели кому-то удалось заставить эти две вещи работать вместе ...?

ответ

3

Для кого-либо другого, имеющего те же проблемы, что и я, у меня есть ряд указателей, которые могут вам помочь. Это только то, что я нашел, помогло мне и просто руководство для любого другого, кто потратил впустую недели ценного времени, задаваясь вопросом, почему, казалось бы, прекрасный код не работает. Я хорошо знаю, что мои умения слабы (старик), но если это помогает сэкономить хотя бы одному человеку, то мое время не было полностью потрачено впустую.

Это для веб-форм C# .NET 3.5, а не MVC.

Во-первых, убедитесь, что для свойств объекта ContentType и ContentEncoding объекта Response установлено значение JSON. В прошлом я использовал «текст/обычный», но это не похоже на работу для меня по этому поводу:

context.Response.ContentType = "application/json"; 
context.Response.ContentEncoding = Encoding.UTF8; 

Если с помощью LINQ, создавая новый объект в порядке и формат календаря ожидает поможет свести к минимуму проблемы с нарушениями данных. Если вам нужны назначения только для чтения, вы можете просто добавить опцию в список. Элемент «заголовок» ниже работает как ISNULL или будет COALESCE в SQL, чтобы предотвратить обнуляет возвращается:

var apps = (
    from a in db.Appointments 
    select new { 
     id = a.id, 
     start = a.startTime.Value, 
     end = a.endTime.Value, 
     title = a.subjectLine == null ? "" : a.subjectLine 
    }).ToList(); 

Хотя Есть много способов сериализации набора данных в формате JSON, я нашел самый чистый метод заключается в использовании библиотеки NewtonSoft Json.NET.Это так же просто, как добавить одну строку, чтобы создать объект JSON, с необходимой ISO8601 форматирования даты:

return JsonConvert.SerializeObject(apps, new IsoDateTimeConverter()); 

Насколько сторона JQuery идет, я буду показывать только «данные:» функцию, так как это та часть, которая была мне смущенный на самый длинный:

data: function(start, end, callback) { 
    $.ajax({ 
     url:  "/content/handlers/GetScheduledAppointments.ashx", 
     type:  "GET", 
     success: function(json) { 
      callback(json); 
     }, 
     async:  false 
    }); 
} 

удобный наконечник относительно даты, которые я пришел, прежде чем я начал использовать библиотеку Json.NET - если вы просто не можете получить .NET для возврата даты в формате что jWC нравится, затем используйте библиотеку [Date.js для выполнения дополнительного форматирования в самом jQuery. В течение нескольких дней я не мог получить исходный код для вывода времени начала и окончания в формате, который будет отображаться в календаре, независимо от того, что я пробовал. Во всех примерах функционирования (с локальными данными генерируются в JQuery) даты были созданы, используя следующий формат:

new Date(year, month, day, hour, minute) 

Таким образом, используя эту основу, также можно явно привести даты, возвращаемые со спины конец, как библиотека Date.js займет почти все приближается дата и работы его магии:

data: function(start, end, callback) { 
    $.ajax({ 
     url:  "/content/handlers/GetScheduledAppointments.ashx", 
     type:  "GET", 
     success: function(json) { 
      if ($.isArray(json)) { 
       $.each(json, function(key, value) { 
        value.start = new Date(value.start); 
        value.end = new Date(value.end); 
       }); 
      } 
      callback(json); 
     }, 
     async:  false 
    }); 
} 

Я знаю, что ничего из этого не очень Leet (или даже оптимизированная), но, надеюсь, это может быть полезным для некоторых люди, которые испытывают настоящие трудности с jWC и .NET.

+0

tx много .. Я столкнулся с проблемами интеграции jWC с asp.net MVC .. это сообщение помогло мне – Premkumar

+0

Очень хороший человек, я боролся с ним с 2 дней, мне все еще нужна помощь, могли бы вы поделитесь с вами ответом «json»? Я просто хочу проверить формат DateTime, отправленный с сервера, я использую Web API. –

+0

Я мог бы, если бы у меня все еще было это! К сожалению, я больше не работаю в должности, где был этот код, поэтому я очень сожалею об этом. Надеюсь, вам удастся его отсортировать! – mafbailey

Смежные вопросы