1

getJson を使用して Google カレンダーの情報を取得しようとしています。場合によっては、取得しようとしているカレンダーが利用できる場合と利用できない場合があり、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();});

}
4

2 に答える 2

0

ページがホストされているドメインが AJAX リクエストのドメインとは異なるため、実際には JSONP リクエストを実行しています。JSONP は、通常の XMLHTTPRequest インターフェイス (script要素を使用) を使用して機能せず、失敗のコールバックをサポートしません。

error関数のオプションの下を見ると、次の$.ajaxメモが表示されます。

このハンドラは、クロスドメイン スクリプトおよびクロスドメイン JSONP リクエストでは呼び出されません

同じことが にも当てはまります$.getJSON( のラッパーであるため$.ajax)。

失敗時のコールバックが必要な場合は、おそらく 2 秒のタイマーなどに基づいて、自分でプログラムする必要があります。

于 2013-05-25T19:36:34.527 に答える