2

私はbackbone.jsを初めて使用し、同様の問題に対する他の解決策を読みましたが、それでも私の例を機能させることができません。以下のURLからJSONを返す基本的なRailsAPIがあり、backbone.jsフロントエンドを介してアクセスしようとしています。それらは1つの異なるサーバーであるため、「jsonp」リクエストを使用する必要があると思います。現在、バックボーンコレクションの同期関数をオーバーライドしてこれを行っています。

Api url: http: //guarded-wave-4073.herokuapp.com/api/v1/plans.json

sync: function(method, model, options) {
    options.timeout = 10000;
    options.dataType = 'jsonp';
    options.url = 'http://guarded-wave-4073.herokuapp.com/api/v1/plans.json'
    return Backbone.sync(method, model, options);
}

これをテストするために、「plans = new Plans()」、次に「plans.fetch()」を使用してChromeコンソールに新しい「plans」コレクションを作成し、JSONを取得しようとします。

後でplans.modelsを呼び出すと、まだ空の配列があり、plans.fetch()から返されるオブジェクトにはjsonデータが含まれていないようです。

私が間違っているアイデアはありますか?

4

3 に答える 3

3

私は以前に同じ問題を抱えていました。syncメソッドをオーバーライドする必要はありません。

StackoverflowAnswerから取得

「JSONP手法は、サーバーにHTTPリクエストを発行し、応答に基づいて動作するためにまったく異なるメカニズムを使用します。クライアントページとサーバーで連携するコードが必要です。サーバーには、HTTP「GET」リクエストに応答するURLが必要です。関数呼び出しでラップされたJSONのブロック。したがって、古いサーバーに対してJSONPトランザクションを実行するだけでなく、機能を明示的に提供するサーバーである必要があります。」

サーバーが上記に準拠していることを確認しますか?別の互換性のあるjsonpサービス(Twitter)でテストして、結果が得られるかどうかを確認しますか?

于 2012-10-03T14:40:13.053 に答える
0

fetchメソッドもオーバーライドしてみましたか?

于 2012-10-01T15:46:19.650 に答える
0

?callback=?jsonpを有効にするには、APIURLに追加する必要があります

于 2012-12-20T11:03:59.553 に答える