2013-07-26 10 views
8

Następujący kręgosłup collection.fetch uruchamia kod, z jakiegoś powodu błędy, a następnie przeskakuje do obsługi błędu (zgodnie z oczekiwaniami), ale tak naprawdę nie wiem, jakie są parametry obsługi błędu. Parametry model, xhr i opcje są niezdefiniowane, gdy wystąpi błąd. Co ja robię źle?backbonejs kolekcja.fetch handler błędu

var onErrorHandler = function(model, xhr, options) { 
     alert(options); 
    }; 

    that.collection = new MembersCollection([]); 
    that.collection.fetch({ success : onDataHandler, error: onErrorHandler, dataType: "jsonp" }); 

@muistooshort: Całkowicie zapomniałem o argumentach js, dzięki za tę wskazówkę.

Oto co znalazłem ...

Arguments[0] = looks like its just the letter "d" 
Arguments[1] = is an object. Has readyState, responseText, status, statusText 
Arguments[2] = is an object. Exactly the same as [1] 

status = 200, a tekst jest "OK". Parametr responseText jest dokładnie danymi JSON, które spodziewałem się otrzymać z modelu serwera PHP.

Więc teraz domyślam się, dlaczego ta metoda collection.fetch wysyła wynik sukcesu do obsługi błędu? Nie wierzę, że kolejność tych procedur w wezwaniach do pobrania ma znaczenie. Czy to?

+2

Czy jesteś pewien, że wszystkie są "niezdefiniowane"? Zawsze możesz 'console.log (argumenty)' zobaczyć, co dokładnie jest przekazywane. –

+0

brakuje niektórych wymaganych opcji ajax dla żądania jsonp. http://stackoverflow.com/questions/7202603/jquery-ajax-jsonp –

+0

@muistooshort: Całkowicie zapomniałem o argumentach js, dzięki za tę wskazówkę. Oto, co znalazłem ... – Locohost

Odpowiedz

15

Ok Znalazłem podpis params dla wywołań zwrotnych pobierania i programów obsługi powodzenia/błędów. Teraz, gdy są ustawione prawidłowo, pobieranie działa zgodnie z oczekiwaniami. To działa kod ...

var onDataHandler = function(collection, response, options) { 
     console.log('membersview fetch onedatahandler'); 
     that.render(); 
    }; 

    var onErrorHandler = function(collection, response, options) { 
     console.log('membersview fetch onerrorhandler'); 
     alert(response.responseText); 
    }; 

    that.collection = new MembersCollection([]); 
    that.collection.fetch({ success : onDataHandler, error: onErrorHandler }); 

Dziękuję wam za odpowiedzi. Bardzo potrzebuję/doceniam twoją radę :-)