2012-04-12 38 views
1

Noob question here:骨干模型保存触发器Chrome/FF上的错误回调

我正在使用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(字符串名称)被调用罚款,我得到一个成功的回应。但是我在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

而不是警报(“错误”)试图做一个的console.log(响应),看看MVC被发回。不知道为什么IE会以不同的方式处理它,但值得一试。 – clexmond 2012-04-12 02:03:55

+0

没有运气。响应对象有一个responseText:“”和statusText:“错误”。不确定其他任何属性是否能为我提供更好的反馈。 – rtorres 2012-04-12 02:39:11

+0

小提琴http://jsfiddle.net/Uj5Ae/2/与您的客户代码似乎是好的。什么与您的服务器响应?或者Backbone和Underscore版本不匹配? – nikoshr 2012-04-12 08:27:52

回答

1

小提琴http://jsfiddle.net/Uj5Ae/2与您的客户端代码似乎是好的。什么与您的服务器响应?或者Backbone和Underscore版本不匹配?
或者,如果事件传播未在其他位置处理,则可能是在点击处理程序结束时返回false。

剧透:这是事件传播:)