我有一些测试代码,我只想用来计算backbone.js。当我在模型对象骨干上调用destroy时,向我的休息服务发出DELETE请求。但是,我看不到任何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
似乎没有ID或任何内容,也没有帖子数据。我做错了吗?感谢。
答案 0 :(得分:17)
您应该设置模型的urlRoot属性,然后让Backbone处理构建DELETE
网址:
var AccountModel = Backbone.Model.extend({
urlRoot: 'Account/Update',
id: null,
username: ''
});
当调用accountM.destroy()
时,这将导致以下请求:
Request URL:http://localhost/probli/Account/Update/1
Request Method:DELETE
Status Code:200 OK
答案 1 :(得分:1)
Backbone.sync会将destroy作为简单请求发回,并在URL中包含ID。例如:
DELETE http://example.com/foos/1
这是ID为Foo
的{{1}}的HTTP删除。
在像Rails,ASP.NET MVC,甚至Sinatra和其他简单服务器这样的MVC Web服务器中,这将成为服务器的参数。
例如,在Sinatra:
1
如您所见,我在路线中定义了一个名为
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
,将其销毁,并返回了一个空的JSON结果 - 这是Backbone所要求的,即使在销毁过程中也是如此。
希望有所帮助。