2013-07-26 22 views
8

Aşağıdaki omurga koleksiyonu.Takım kodu, bazı nedenlerden dolayı hatalar tetikler ve hata işleyicisine atlar (beklendiği gibi), ancak hata iletici paramların ne olduğunu gerçekten bilmiyorum. Hata tetiklendiğinde, model, xhr ve seçenekler paragrafları tanımsızdır. Neyi yanlış yapıyorum?backbonejs collection.fetch error handler

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

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

@muistooshort: Tamamen, js argümanlar hakkında Tavsiye için teşekkürler unuttum. İşte

... ne buldum

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 ve metin "Tamam" dır. ResponseText, PHP sunucu modelinden almayı beklediğim kesin JSON verileridir.

Şimdi, soru şu ki, bu yüzden başarıyı gönderen collection.fetch yöntemi hata işleyicisine neden yollanıyor? Geri getirme çağrılarında bu işleyicilerin sırasının önemli olduğuna inanmıyorum. Yapar?

+2

Hepsinin undefined olduğundan emin misiniz? Tam olarak nelerin geçtiğini görmek için her zaman 'console.log (argümanlar) 'yapabilirsiniz. –

+0

jsonp isteği için gerekli ajax seçeneklerinden bazılarını kaçırıyorsunuz. http://stackoverflow.com/questions/7202603/jquery-ajax-jsonp –

+0

@muistooshort: Ben js argümanlarını tamamen unuttum, bahşiş için teşekkürler. İşte bulduğum şey ... – Locohost

cevap

15

Tamam Getirme geri çağırma ve başarı/hata işleyicileri için params imzasını buldum. Artık bunlar doğru şekilde ayarlanmış, getirme beklendiği gibi çalışıyor. Bu çalışma kodu ...

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 }); 

Yanıtlarınız için teşekkürler. Tavsiyenize çok şükür/teşekkürler :-)