这里的菜鸟问题:
我正在使用 ASP.NET MVC 3,并且正在尝试通过 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(string name) 被调用得很好,我得到了成功响应。但是我在 Chrome 和 FF 上遇到了问题——它们都触发了错误回调,但在 Chrome 上我的控制器操作根本没有受到影响(尽管在 FF 上确实如此)。有趣的是,我的动作断点确实在 FF 上被击中,具有适当的参数值,但仍然得到错误回调。
我不确定这里发生了什么。我尝试通过 Firebug/Chromebug 进行调试,但在错误回调参数上看不到太多(errorStatus 只是......好吧......“错误”!)。我还尝试查看“网络”选项卡和 Fiddler,但没有看到任何响铃的东西(也许我看的地方不对)。我还尝试对控制器进行直接的 jquery ajax 调用,但仍然得到相同的奇怪行为。
以防万一,这是 MVC 操作(尽管我认为问题不在这里):
[HttpPost]
public JsonResult Add(string name)
{
var stubbedResponse = new {id = Guid.NewGuid()};
return Json(stubbedResponse);
}
有什么想法可能导致这种情况吗?