2012-01-14 17 views
8

backbone.jsを把握するためのテストコードがあります。モデルオブジェクトのdestroyを呼び出すと、私のrestサービスに対してDELETE要求が行われます。しかし、私はどのレコードが要求データ、クエリー・ストリング、本文、どこで削除されているかを示すIDは見えません。backbone.jsを呼び出すときにレコードIDを取得する場所

私のモデルはidプロパティを持っています。私はその値に1を割り当てました。IDがサーバーを通過することを確認するために何か必要なことは何ですか?または、レコードが削除されていることを検出するはずです。

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

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

accountM.destroy(); 

私はAJAX要求が行われた参照デバッガを見て、それだけで次のようになります:

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

思えありdoens't -

編集は、ここに関連するコードですIDや何かになり、投稿データはありません。私は間違って何かしていますか?ありがとう。

+1

あなたを共有することができます:accountM.destroy()が呼び出されたときに

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

これは、次のリクエストが発生しますテストコードしてください? –

+0

私はちょうどコードを追加するために投稿を編集しました。見てくれてありがとう! – Jason

答えて

17

あなたはその後、バックボーンがDELETE URLを構築任せモデルのurlRoot属性を設定する必要があります。

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

でコレクションに存在することを確認しました。それはまさにそれです - ありがとう! – Jason

+0

null idはどのようにして1になりますか? – lulalala

+0

@lulalalaこの行で新しいインスタンスを作成するとき 'new AccountModel({id:1、username: 'test'});' –

1

Backbone.syncは、URLにIDを持つ簡単なリクエストとして破棄を送信します。例えば:

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

これはHTTPは1のIDとFooための削除です。

Rails、ASP.NET MVC、SinatraなどのシンプルなサーバーなどのMVC Webサーバーでは、これがサーバーに渡されるパラメータになります。シナトラで例えば

、:


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 

あなたが見ることができるように、私は、ルートのパラメータを定義し:idと呼ばれ、私のコードはparamsデータを介してアクセスすることができました。私はその後、問題のFooを見つけて破棄し、破棄中であっても、Backboneが必要とする空のJSON結果を返しました。

希望に役立ちます。

+0

お返事ありがとうございます。あなたはどこにIDがURLに追加されるかを指定するバックボーンのjavascriptのどこかにありますか?私はちょうどいくつかのサンプルコードを投稿し、私はリクエストが行われていることがわかりますが、IDがないことを見ることができますdubuggerを見て。ありがとう。 – Jason

+0

これに対するすべての更新。私は同じ問題を抱えている。 DELETEリクエストは送られますが、 'id'はURLに送られません。モデルが有効なID – detj

関連する問題