Я играю с jQuery Week Calendar и пытаюсь заставить это работать, но я не могу понять, почему это выдает ошибку.
В календаре есть метод, который возвращает список событий, которые нужно заполнить.
Метод (который использует предустановленные события для демонстрационных целей) выглядит следующим образом:
function getEventData() {
var year = new Date().getFullYear();
var month = new Date().getMonth();
var day = new Date().getDate();
return {
events : [
{
"id":1,
"start": new Date(year, month, day, 12),
"end": new Date(year, month, day, 13, 30),
"title":"Lunch with Mike"
},
...
{
"id":6,
"start": new Date(year, month, day, 10),
"end": new Date(year, month, day, 11),
"title":"I am read-only",
readOnly : true
}
]
};
}
Я изменил его так, чтобы он использовал jQuery GET для другой страницы, которая возвращала бы список реальных дат. Для тестирования я сохранил те же тестовые данные, чтобы посмотреть, правильно ли выполнялась запись.
Метод вызовет страницу и вернет ее в свойстве responseText
.
{
events : [
{
'id':1,
'start': new Date(2010, 2, 22, 12),
'end': new Date(2010, 2, 22, 13, 30),
'title':'Lunch with Mike'
},
...
{
'id':6,
'start': new Date(2010, 2, 28, 10),
'end': new Date(2010, 2, 28, 11),
'title':'I am read-only',
readOnly : true
}
]
}
Есть ли разница между двумя методами, которые я пропускаю? Два объекта для меня выглядят одинаково, за исключением того, что второй использует «вместо», поскольку он пишется через C # и не использует переменные year / month / day.
Проблема в том, что второй метод выдает ошибку, говорящую, что "G не определен", есть ли причина, по которой jQuery не понравился бы объект JSON, который я возвращаю?
РЕДАКТИРОВАТЬ: Я думаю, что я нашел источник ошибки. Внутри одного из методов есть оператор if, подобный этому:
if (typeof options.data == 'string') {
if (options.loading) options.loading(true);
var jsonOptions = {};
jsonOptions[options.startParam || 'start'] = Math.round(weekStartDate.getTime() / 1000);
jsonOptions[options.endParam || 'end'] = Math.round(weekEndDate.getTime() / 1000);
$.getJSON(options.data, jsonOptions, function(data) {
self._renderEvents(data, $weekDayColumns);
if (options.loading) options.loading(false);
});
}
else if ($.isFunction(options.data)) {
options.data(weekStartDate, weekEndDate,
function(data) {
self._renderEvents(data, $weekDayColumns);
});
}
При простом выводе объекта JSON в getEventData () (первый способ) он попадает в оператор else, потому что он распознается как функция (я предполагаю), но когда я выполняю ajax GET, он считается строкой и вдаваясь в if.
Есть ли способ распознать это как функцию? Я попытался заключить возвращаемый результат в фигурные скобки, изменив dataType на script и используя eval () для приведения результата к функции, но ничего из этого, похоже, не сработало.