Использование success / jsonpCallback с запросом ajax

Я разрабатываю приложение для Netflix, используя их OData API. Я следил за записью в блоге Стивена Вальтера о том, как запрашивать OData API. В нем он использует следующий код:

$.ajax({
   dataType: "jsonp",
   url: query,
   jsonpCallback: "callback",
   success: callback
}); 

В моем приложении мне нужно использовать ссылки на страницы OData, чтобы получить полные списки. Мой код выглядит следующим образом:

// create url and handle ajax call to Netflix
  function getTitles() {
    query = "http://odata.netflix.com/v2/Catalog" // netflix odata base url
    + "/Genres('Television')" // select Genre
    + "/Titles" // top-level resource
    + "?$select=NetflixApiId,Name,BoxArt,Synopsis,ReleaseYear,AverageRating,Series" // choose fields 
    + "&$orderby=Name" // Sort results by name
    + "&$filter=Instant/Available eq true"  // filter by instant view
    + " and Type eq 'Season'" // select only seasons
    + "&$expand=Series" // include series data
    + "&$callback=callback" // specify name of callback function
    + "&$format=json"; // json request
    $.ajax({
      dataType: "jsonp",
      url: query,
      jsonpCallback: "callback",
      success: callback,
      error: function(XHR, textStatus, errorThrown){
        alert(textStatus + ":" + errorThrown);
      } 
    });
  }

// create seasons array and and repeat ajax call until all results are returned 
  function callback(result) {
    seasons = seasons.concat(result["d"]["results"]);
    if (typeof result["d"]["__next"] != 'undefined') {
      var urlJSONP = result["d"]["__next"] + "&$callback=callback&$format=json";
      $.ajax({
        dataType: "jsonp",
        url: urlJSONP,
        jsonpCallback: "callback",
        success: callback,
        error: function(XHR, textStatus, errorThrown){
          alert(textStatus + ":" + errorThrown);
        } 
      });
    } else {
      processResults();
    }
  }

Однако, при этом я продолжаю получать ошибку parserError . Похоже, функция обратного вызова вызывается дважды. Если я удалю строку success: callback , приложение будет работать нормально. Мой вопрос: Есть ли проблема с выходом строки кода success из вызова ajax? Или зачем нужно включать обе строки jsonpCallback и success ? I в основном спрашиваю об этом из любопытства, потому что приложение, кажется, нормально работает без обеих линий обратного вызова.

6
задан Sumurai8 26 June 2015 в 15:56
поделиться