【发布时间】:2013-05-25 18:18:49
【问题描述】:
我正在尝试使用 getJson 检索一些谷歌日历信息。在某些情况下,我尝试检索的日历可能可用也可能不可用,我会得到 GET HTTP 错误 403 或 404,其他时候 GET 会成功。我的问题是即使在 GET 无法接收数据的情况下,我也需要执行一些代码。我认为使用 .always 方法无论如何都会执行此代码,但事实证明它不会在 403 或 404 发生时执行。我还尝试使用 .fail 方法专门针对这种情况,但没有成功。有什么想法吗?
添加代码:
function AcquireGroupFeed(GroupDataBase) {
// For each group the calendar information is aquired and, if the events are
// relevant they are added to the feed.
// The group's calendar URL
var CalUrl = "http://www.google.com/calendar/feeds/" + GroupDataBase.calendarid +
"/public/full?alt=json-in-script&callback=?";
// Acquiring the data from Google.
$.getJSON(CalUrl, function(data) {PushToEventFeed(data, GroupDataBase);})
.always(function(){CheckAllGroupsAcquired();});
}
【问题讨论】:
-
它会在出现 http 错误时执行 - 您的代码有问题,或者您使用的是较旧的 jquery
-
嗨,Thelemitian,这听起来很烦人。但是很难将这些问题诊断为 javascript 问题。如果您收到 4xx(在您的情况下为 403- 禁止,404- 未找到),则表示服务器已收到您的请求,但您发送的请求有问题。如果您认为服务器不应该发送 4xx,邮政编码,这将是一个很好的 SO 问题。否则,请阅读w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10 祝你好运!
-
感谢大家的快速回复! 4xx 错误是预期的,不是问题。此代码旨在从不同组织拥有的日历中获取信息并生成提要。因此,如果一个装饰删除了一个日历,我会收到其中一个错误,我需要确保我正确处理了这种情况。我希望 .always() 能做到这一点,并且根据 Sam 的评论似乎应该这样做,但是当确实发生错误时不会执行该方法(在没有发生错误时执行)我可能做错了什么,但我没有找到问题。
标签: javascript jquery error-handling getjson