2012-01-14 13 views
8

Ben sadece backbone.js öğrenmek için kullanmaya çalıştığım bazı test kodum var. Bir model nesne omurga üzerinde yok dediğimde, dinlenme servisime bir DELETE isteği yapar. ancak, istek verilerinde, sorgudaki, gövdede veya herhangi bir yerde hangi kaydın silindiğini belirten herhangi bir kimlik göremiyorum.backbone çağıran kimliği geri çağırmak nerede

Modelimin bir kimlik özelliği var ve ona 1 değeri verdim, kimliğin sunucudan geçtiğinden emin olmak için yapmam gereken başka bir şey var mı? ya da hangi kaydın silindiğini tespit etmem gereken başka bir yol var mı?

var AccountModel = Backbone.Model.extend({ 
    url: 'Account/Update', 
    id: null, 
    username: '' 
}); 

var accountM = new AccountModel({id: 1, username: 'test'}); 

accountM.destroy(); 

ben AJAX istek yapıldığında bakın ayıklayıcıya bakmak, sadece şuna benzer::

Request URL:http://localhost/probli/Account/Update 
Request Method:DELETE 
Status Code:200 OK 

görünüyor Orada doens't -

Düzenleme İlgili kod İşte Bir kimlik ya da herhangi bir şey olmak ve herhangi bir posta verisi yok. Yanlış bir şey yapıyorum? Teşekkürler.

+1

Paylaşabileceğin senin test kodu lütfen? –

+0

Sadece kod eklemek için yazıyı düzenledim. baktığın için teşekkürler! Cevap için – Jason

cevap

17

Ardından Backbone kolu DELETE url inşa edelim Modelinizin urlRoot niteliğini belirlesin

Request URL:http://localhost/probli/Account/Update/1 
Request Method:DELETE 
Status Code:200 OK 
+0

ile koleksiyonda mevcut modelini kontrol ettik - teşekkürler! – Jason

+0

Boş değer 1'e nasıl dönüşür? – lulalala

+0

@lulalala Bu satırda yeni bir örnek oluştururken 'yeni AccountModel ({id: 1, kullanıcı adı: 'test'});' –

1

Backbone.sync imhayı, URL'deki kimliğe sahip basit bir istek olarak geri gönderir. Örneğin:

DELETE http://example.com/foos/1

Bu HTTP 1 bir kimliğe sahip bir Foo için silme olduğunu.

Rails, ASP.NET MVC ve hatta Sinatra ve diğer basit sunucular gibi MVC web sunucularında, sunucunuza gelen bir parametre olacaktır. Sinatra Örneğin

: Gördüğünüz gibi


delete "/foos/:id" do 

    id = params[:id] # the id from the url/route 

    foo = Foos.find(id) # get the foo 
    foo.destroy 
    return {}.to_json 
end 

, ben, rotada bir parametre tanımlı :id denilen ve benim kod params verileri aracılığıyla erişmek başardı. Daha sonra Foo'u buldum, imha ettim ve boş bir JSON sonucunu döndürdüm - ki bu da bir imha sırasında bile Backbone tarafından gerekli.

Bu yardımcı olur umarım.

var AccountModel = Backbone.Model.extend({ 
    urlRoot: 'Account/Update', 
    id: null, 
    username: '' 
}); 

Bu accountM.destroy() çağrıldığında aşağıdaki isteği neden olur::

+0

teşekkürler. omurganın javascript'inde, id’in kimliğine nerede ekleneceğini belirttiğiniz bir yer var mı? Sadece bazı örnek kodlar yayınladım ve dublöre baktığımda, isteğin yapıldığını görebiliyorum ama kimlik yok. Teşekkürler. – Jason

+0

Bunun için herhangi bir güncelleme. Aynı sorunu yaşıyorum. DELETE isteği gönderilir, ancak URL'de "id" gönderilmez. Ben tam olarak bu geçerli bir kimlik – detj

İlgili konular