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);
}
任意のアイデアはどのようにこれを引き起こしているだろうか?
代わりの警告だった(「エラーは」)はconsole.log(応答)を実行しようとすると、MVCが返送されたものを参照してください。なぜIEが違った扱いをするのかは分かりませんが、一発の価値があります。 – clexmond
運がありません。応答オブジェクトにはresponseText: ""とstatusText: "error"があります。他のプロパティのいずれかが私により良いフィードバックを提供できるかどうかは不明です。 – rtorres
あなたのクライアントコードを持つFiddle http://jsfiddle.net/Uj5Ae/2/は問題ないようです。あなたのサーバーの応答に何か?または、BackboneとUnderscoreのバージョンが一致しませんか? – nikoshr