Noob问题:
我正在使用ASP.NET MVC 3而我正在尝试通过Backbone保存实体。这就是我所拥有的:
我将Backbone模型(程序)定义为:
var Program = Backbone.Model.extend({
defaults: function () {
return { name: "" };
},
initialize: function (attrs) {
this.set('name', attrs.name);
},
urlRoot: '/program/add'
});
然后我将模型连接起来,除了按钮的点击事件:
$('.add-program').click(function () {
var programName = $('.program-name').val();
var program = new Program({ name: programName });
program.save(null, {
success: function (model, response) {
alert('success');
},
error: function (model, response) {
alert('error');
}
});
});
它适用于IE(令人惊讶!) - ProgramController.Add(字符串名称)被称为正常,我获得成功响应。但是我在Chrome和FF上遇到了问题 - 它们都触发了错误回调,但在Chrome上我的控制器动作甚至根本没有被击中(虽然它在FF上有所不同)。有趣的是,我的动作断点确实被FF击中,具有适当的参数值,但仍然得到错误回调。
我不确定这里发生了什么。我尝试通过Firebug / Chromebug进行调试,并且在错误回调参数上没有看到太多(errorStatus只是......好吧......“错误”!)。我也试过看网络选项卡和小提琴手,我没有看到任何响铃的声音(也许我没看到正确的地方)。我也试过对控制器执行一个直接的jquery ajax调用,但仍然会得到同样奇怪的行为。
以防万一,这是MVC行动(虽然我认为问题不在这里):
[HttpPost]
public JsonResult Add(string name)
{
var stubbedResponse = new {id = Guid.NewGuid()};
return Json(stubbedResponse);
}
任何可能导致此问题的想法?
答案 0 :(得分:1)
使用您的客户端代码的小提琴http://jsfiddle.net/Uj5Ae/2似乎没问题。你服务器响应的东西?或Backbone和Underscore版本不匹配?
或者,如果事件传播未在其他地方处理,则可能在单击处理程序结束时返回false。
剧透:这是事件传播:)