1

こんにちは私はこのモデルを持っています:

window.shop = Backbone.Model.extend({
  initialize: function () {
    console.log('initializing shop');
  },
  urlRoot: "shopData.json",
});

そして、私は行きます:

var myShop = new shop();
myShop.fetch({
    success: function (model, resp){
        console.log(resp);
    },
    error: function (model, resp){
        console.log("error retrieving model");
}}, {wait: true});

今、私は常にエラーメッセージを受け取っています-成功には至りません:-(

助けてくれてありがとう。

4

1 に答える 1

0

編集1:

あなたのコメントによると、サーバーは適切な応答を送信していますが、バックボーンはまだエラー関数を呼び出しています。エラー コールバックの先頭に次の行を追加します。

error: function (model, resp){
    console.log('error arguments: ', arguments);
    console.log("error retrieving model");
}

最初の行は、オブジェクトの配列を出力する必要があります。配列の最初の要素は jqXhr オブジェクトである必要があり、2 番目の要素はエラーの文字列表現である必要があります。最初のオブジェクトをクリックすると、開発ツールでそのプロパティを調べることができます。オブジェクトのプロパティについては、 http://api.jquery.com/jQuery.ajax/#jqXHR を参照してください

その情報を使用して、jQuery がサーバーからエラーを受信して​​いるかどうかを確認できます。

サーバー側のエラーがない場合は、responseTextプロパティの値を確認してください。サーバーから返された文字列データを保持します。$.ajaxそのデータを JSON に解析しようとします。ほとんどの場合、解析でエラーがスローされ、代わりにエラー ハンドラーが発生しています。

応答テキストをコピーして、http://jsonlint.com/に貼り付けます。サーバーから送信された応答が有効な JSON であることを確認します。console.logステートメントの出力とオブジェクトのresponseTextプロパティで質問を更新してください。jqxhr

-xxx-

モデルを独立して使用しているようです。ドキュメントに従って、http://backbonejs.org/#Model-url

"/[urlRoot]/id" の形式の URL を生成します。

つまり、 にリクエストを送信していshopData.json/idます。また、IDを指定していません。

console.log(myShop.url())の前にa を挿入しmyShop.fetch()ます。出力内容をお知らせください。また、Firebug または Chrome Dev Tools に表示される ajax リクエストの詳細を共有することもできます。リクエスト URL とサーバーから返されるレスポンスの 2 つに関心があります。( http://getfirebug.com/network )

于 2012-11-30T13:34:39.797 に答える