2012-04-12 5 views
1

Noobの質問にエラーコールバックをトリガします。ここで私が持っているものです。バックボーンモデルは、ここではクローム/ FF

私のような私のバックボーンモデル(プログラム)を定義した:

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はまあ... "error"です!私はまた、ネットワークタブとフィドラーを見てみましたが、私は鐘を鳴らす何も見ません(おそらく私は正しい場所を見ていない)。私もコントローラにストレートjquery ajaxコールをやってみたが、それでも変わった振る舞いをする。 (私は問題がここにあるとは思わないが)

念のため、ここでのMVCのアクションです:

[HttpPost] 
public JsonResult Add(string name) 
{ 
    var stubbedResponse = new {id = Guid.NewGuid()}; 
    return Json(stubbedResponse); 
} 

任意のアイデアはどのようにこれを引き起こしているだろうか?

+0

代わりの警告だった(「エラーは」)はconsole.log(応答)を実行しようとすると、MVCが返送されたものを参照してください。なぜIEが違った扱いをするのかは分かりませんが、一発の価値があります。 – clexmond

+0

運がありません。応答オブジェクトにはresponseText: ""とstatusText: "error"があります。他のプロパティのいずれかが私により良いフィードバックを提供できるかどうかは不明です。 – rtorres

+0

あなたのクライアントコードを持つFiddle http://jsfiddle.net/Uj5Ae/2/は問題ないようです。あなたのサーバーの応答に何か?または、BackboneとUnderscoreのバージョンが一致しませんか? – nikoshr

答えて

1

Aフィドルhttp://jsfiddle.net/Uj5Ae/2お客様のクライアントコードはOKと思われます。あなたのサーバーの応答に何か?または、BackboneとUnderscoreのバージョンが一致しませんか?
イベントハンドラが別の場所で処理されない場合は、クリックハンドラの最後でfalseが返されることがあります。

スポイラー:イベント伝播:)

関連する問題