2011-08-08 17 views
16

Yani başarısına başarı fonksiyonunu tetiklemiyor modeli siler ve vücut olarak "OK" ile bir 200 üstbilgi döndürür ... ama başarı olayı asla ateş etmez. Bir şey mi eksik? Arka ucun bu olayı ateşlemesine hizmet etmem için ne yapmalıyım? (Ben function(model) var ama bunun bir önemi hiç gerektiğini hariç) Ben omurga eski sürümleri destroy(options) kullanmak yerine destroy(success, failure) vardı olmadığını biliyoruz her yerde var tam olarak ne bana iyi görünüyorBackbone.Model.destroy görüşlerimi birinin içinde, ben bu fonksiyonu var,

+0

Belki de belki de yanıt gövdesi boş olmalıdır. Sadece 200 yanıt kodunu döndür. Ben böyle yaparım. JSON dışında bir şey döndürürseniz, bir omurga hatası aldığına inanıyorum. Ve sadece iyi bir alışkanlık hataları ele almaktır. –

cevap

22

Sadece aynı problemi yaşadım. Benim için çalışan çözüm, bir json modelini silinmiş olana karşılık gelen sunucudan döndürdüğümden emin olmaktı. Boş bir json yanıtı döndürmek yeterlidir.

edit:

delete(model) { 
    // deleted model from db 
    return "Model was deleted"; 
} 

Bu yaptığımız çalışma:

delete(model) { 
    // deleted model from db 
    return model; 
} 

ya:

çalışmaz mı

delete(id) { 
    // deleted model from db with this id 
    return new Model {id: id}; 

}

+3

Herhangi bir JSON'ın geri dönmesini sağlayacağını düşünüyorum. JSON dışında bir şey döndürmek bir hata olur. –

+0

Sorunu çok özledim! – wilsonpage

+2

@ IvanIvanić bu durum böyle değil. Zek'in cevabının işaret ettiği gibi json: 'başarı' hala onaylandığım gibi başarısız oluyor. Bulduğum minimum çalışma yanıtı (Rails için) json oluşturuyordu: {} '(geri bildirim yanıtı {}) ya da json oluşturuluyor: '' (geri bildirimdeki geri bildirim boştur) –

2

. En son sürüme sahip olduğunuzdan emin olabilirsiniz.

+0

Bahşiş için teşekkürler, ancak kullandığım sürüm kesinlikle 'options' argümanıydı - ve daha yeni versiyonu ile hala garip davranışı alıyorum. Ben hala bu konuya değinmedim ve ben sadece DELETE yolladığım ve başarı kazandığım bir hail meleği yapıyorum (... evet, iyi değil - proje hala alfa aşamasında çok fazla). Altına indiğimde geri göndereceğim. – ltd

3

ile Omurga 1.5.3 kullanarak aynı sorunu vardı Raylar. Rudena'nın çözümünü denedim ve işe yarıyor! çalıştı ne burada

def destroy 
    @cell = current_user.cells.find(params[:id]) 
    @cell.destroy 

    render :json => "success" 
end 

Ve:

İşte benim kontrolörün silme fonksiyonu başlangıçta böyle görünüyordu

def destroy 
    @cell = current_user.cells.find(params[:id]) 
    @cell.destroy 

    render :json => @cell 
end 
+1

Bu cevap Rails'e özel, +1. – jhamm

0

bu sorunun de benim UI ile gelip olsaydı. API, DELETE tarihinde boş bir 200 yanıtıyla geri döndü.

Olanakta, jQuery bir json yanıt gövdesi bekler, ancak yanıt boş olduğunda json ayrıştırma başarısız olur ve hata geri çağrısı tetiklenir. options jQuery'nin ajax çağrısına geçirilir ve json beklemek değil jQuery talimatı vermiş olursunuz çünkü bu işler

var MyModel = Backbone.Model.extend({ 
    // Fix for empty DELETE response 
    sync: function(method, model, options) { 
    if (method === 'delete') { 
     options.dataType = 'html'; 
    } 
    Backbone.sync.call(this, method, model, options); 
    } 
}); 

: Benim çözümüm

Model'in sync yöntemini geçersiz oldu.

İlgili konular