2012-02-15 103 views
0

在我的网站我想添加事件到谷歌日历使用javascript api.I改变了我的邮件。但我有错误的火虫。Javascript谷歌日历API不工作

这是我的代码:

<html> 
<head> 
<script type="text/javascript" src="http://www.google.com/jsapi"> 
google.load("gdata", "1"); 
google.setOnLoadCallback(getMyFeed); 
</script> 
</head> 
<body> 
<script type="text/javascript"> 
var myService; 
var feedUrl = "http://www.google.com/calendar/feeds/[email protected]/private/full"; 
function logMeIn() { 
    scope = "http://www.google.com/calendar/feeds/"; 
    var token = google.accounts.user.login(scope); 
} 
function setupMyService() { 
    myService = new google.gdata.calendar.CalendarService('exampleCo-exampleApp-1'); 
    logMeIn(); 
} 
function getMyFeed() { 
    setupMyService(); 

myService.getEventsFeed(feedUrl, handleMyFeed, handleError); 
} 

function handleMyFeed(myResultsFeedRoot) { 
    alert("This feed's title is: " + myResultsFeedRoot.feed.getTitle().getText()); 
} 

function handleError(e) { 
    alert("There was an error!"); 
    alert(e.cause ? e.cause.statusText : e.message); 
} 

// Create the calendar service object 
var calendarService = new google.gdata.calendar.CalendarService('GoogleInc-jsguide-1.0'); 

// The default "private/full" feed is used to insert event to the 
// primary calendar of the authenticated user 
var feedUri = 'https://www.google.com/calendar/feeds/default/private/full'; 

// Create an instance of CalendarEventEntry representing the new event 
var entry = new google.gdata.calendar.CalendarEventEntry(); 

// Set the title of the event 
entry.setTitle(google.gdata.Text.create('JS-Client: insert event')); 

// Create a When object that will be attached to the event 
var when = new google.gdata.When(); 

// Set the start and end time of the When object 
var startTime = google.gdata.DateTime.fromIso8601("2008-02-10T09:00:00.000-08:00"); 
var endTime = google.gdata.DateTime.fromIso8601("2008-02-10T10:00:00.000-08:00"); 
when.setStartTime(startTime); 
when.setEndTime(endTime); 

// Add the When object to the event 
entry.addTime(when); 

// The callback method that will be called after a successful insertion from insertEntry() 
var callback = function(result) { 
    PRINT('event created!'); 
} 

// Error handler will be invoked if there is an error from insertEntry() 
var handleError = function(error) { 
    PRINT(error); 
} 

// Submit the request using the calendar service object 
calendarService.insertEntry(feedUri, entry, callback, handleError, google.gdata.calendar.CalendarEventEntry); 
</script> 
<form> 
<input type="button" value="Start" onClick="getMyFeed()" /> 
</form> 
</body> 
</html> 

当我点击该按钮STRAT我得到一个错误:

google.gdata is undefined 

...Service = new google.gdata.calendar.CalendarService('exampleCo-exampleApp-1'... 

什么是我的代码的问题?

回答

-1

在存在之前,您正在致电google.gdata。读取你的代码,看起来你正在动态加载gdata库。它看起来像getMyFeed将被加载调用。因此,在执行getMyFeed之前,不要尝试访问google.gdata

我还建议将您的内联脚本移动到您的头部,尤其是在其他script标记之上。

+0

可以重新编写代码吗? – 2012-02-16 03:37:02

1

用window.onload事件包装所有的javascript代码, 我认为它会帮助你逃避“google.gdata is undefined”错误。