0

我有两个页面,都在同一个域上。两者都试图从 Google 日历获取事件源。一个成功,一个不成功。唯一的区别是一个使用jQuery的document.ready,另一个使用window.onload。

有效的页面:http ://wwwtest.english.wisc.edu/calendar.htm

不起作用的页面:http ://wwwtest.english.wisc.edu/844.htm

第二个页面是由 CMS 生成的,因此我无法控制脚本的加载顺序,因此我使用 window.onload 来确保首先加载其他脚本。

*以下补充说明*

是的,我已经完成了调试,这是确切的错误:

XMLHttpRequest 无法加载 https://www.google.com/calendar/feeds/rhrab82ir5qgut1ddv7qj087c8%40group.ca …ar.google.com/public/basic?start=1356847200&end=1360476000&_=1358694509517。Access-Control-Allow-Origin 不允许来源http://wwwtest.english.wisc.edu 。

但对我来说令人困惑的部分是:

我从有效的页面复制了代码,只更改了两件事:

1) 我从使用 jQuery 的 document.ready 更改为使用 window.onload

2) 我改变了 jQuery 选择器

4

4 回答 4

1

我可能通过在 firebug 中的快速调试发现了您的问题。你的来电

https://www.google.com/calendar/feeds/rhrab82ir5qgut1ddv7qj087c8%40group.calendar.google.com/public/basic?start=1356850800&end=1360479600&_=1358632991615 正在返回:XML解析错误:找不到元素位置:moz-nullprincipal :{627004d0-0e97-ca46-9ae8-767df4ae9d4f} 第 1 行,第 1 列:

有一些有趣的信息位于Cross-domain Ajax call gets no element found Location: moz-nullprincipal and

jQuery Ajax 调用 No element found 问题

于 2013-01-19T22:06:06.723 回答
1

XMLHttpRequest 无法加载https://www.google.com/calendar/feeds/rhrab82ir5qgut1ddv7qj087c8%40group.ca …ar.google.com/public/basic?start=1356814800&end=1360443600&_=1358633133560。Access-Control-Allow-Origin 不允许来源http://wwwtest.english.wisc.edu 。

我使用 Chrome 来调试这些东西。Ctrl+Shift+J 用于 JavaScript 控制台。

于 2013-01-19T22:07:51.953 回答
1

显然,完整日历具有使用 Google 日历事件所需的特定附加脚本。

这里的信息:http: //arshaw.com/fullcalendar/docs/google_calendar/

第一个例子加载了这个脚本,但第二个没有。添加它后,事件会正确加载。

于 2013-01-20T15:52:32.083 回答
0

第一个使用 jsonp api,而第二个使用 xml api,因此适用同源策略,如果您可以更改第二个请求以使用 jsonp api。

于 2013-01-19T22:10:34.430 回答