我玩弄了jQuery Week Calendar,我試圖得到這個工作,但我想不通這是爲什麼拋出一個錯誤。這兩種返回JSON對象的方式有什麼區別?
日曆有一個返回事件與填充本身的列表的方法。
的方法(使用預先設定的事件用於演示目的)是這樣的:
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到達另一個網頁,將返回真正的日期列表。爲了測試,我保留了相同的測試數據,以查看帖子是否正確完成。
的方法調用的頁面,它會在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#編寫的,並且它不使用年/月/日變量。
問題是第二個方法拋出一個錯誤,說「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);
});
}
當只是在輸出getEventData()(第一種方式)的JSON對象它擊中else語句因爲它被認爲是一個函數(我猜),但是當我做ajax GET時,它被認爲是一個字符串並進入if。
反正有沒有得到這個公認的功能?我嘗試在大括號中包裝返回值,將dataType更改爲腳本並使用eval()將結果作爲函數進行投射,但似乎沒有任何效果。
害怕沒有工作,它似乎使它失敗默默。 – Brandon 2010-02-22 22:26:16