0

このリポジトリのアプリの例に従って、 API用のrails intead phpを使用してローカルマシンで同様のアプリを構築し始めたので、特定のルートディレクトリでrailsアプリを構築し、次に別のルートでbackbone.js/を構築します。 RailsAPIを呼び出すJQMアプリ。

だから私はバックボーンでモデルとコレクションを次のurlRootで作成します:http:// localhost:3000 / api / clubs.json、これはクラブのリストを取得するためのローカルサーバーのURLに対応します

次に、これらのコマンドで何が起こるかをjavascriptコンソールで確認しようとしました。

clubs = new ClubsCollection()

Object {length = 0 ...etc..}

clubs.fetch()
GET http://localhost:3000/api/clubs.json 200 OK

そして応答は空です...

しかし、URL http:// localhost:3000 / api / clubs.jsonを呼び出すと、jsonクラブリストが正しく返されます。

この電話をかける最良の方法を理解するのを手伝ってもらえますか?

4

3 に答える 3

1

基本的な設定で「rack-cors」gemを使用して問題を解決しました

config / application.rb:

config.middleware.use Rack::Cors do
      allow do
        origins 'localhost'
        resource '%r{/api/\$+.json}',
          :headers => ['Origin', 'Accept', 'Content-Type'],
          :methods => [:get, :put, :delete]
      end
end
于 2012-05-09T08:33:18.833 に答える
1

fetch非同期です。データのロードが完了するのを待ってから、応答を確認する必要があります。これは通常、resetイベントを通じて行われます。


clubs = new ClubsCollection();
clubs.on("reset", function(){
  alert(clubs.length + " item(s) found");
});
clubs.fetch();
于 2012-05-07T13:36:20.093 に答える
0

バックボーンAPIを見ると、fetch()呼び出しで提供できる成功コールバックがあります。

clubs.fetch({success:function(model、err){//何かをする}});

他の答えと同様に、フェッチは非同期であるため、.fetch()呼び出しの後にブレークポイントを設定しても結果が返されることは期待できません。

于 2012-05-07T21:26:19.903 に答える