Sammy.jsの使用経験がある人が、クロスオリジンリソースシェアリングを使用するためのソリューションを持っているかどうか疑問に思いました。
編集
元々の質問は、基本的に、.load()メソッドなどをオーバーライドするなど、Sammy.jsを使用してCORSを達成するために人々がどのようなアプローチを使用したかを尋ねることでした。
私が抱えている問題は、異なるドメイン(CORS対応のsinatraアプリ)にあるSinatra apiと対話しようとしているときに.load()メソッドを使用すると、期待どおりに機能しないことです。
次のようなAjax呼び出しを使用する場合:
this.get('#/', function(context) {
$.ajax({
url: 'http://localhost:4567/posts', //located on other domain
dataType: 'json',
success: function(items) {
$.each(items, function(i, item) {
context.log(item.title);
});
}
});
});
... firebugはコンソールにアイテム/投稿を表示しますが、.loadを使用すると、次のようになります。
this.load('http://localhost:4567/posts')
.then(function(items) {
$.each(items, function(i, item) {
context.log(item.title);
});
});
...すべてがうまくいかず、firebugコンソールにはhttp://pastie.org/4051256が表示されますが、firebugは投稿のjson配列が正常に取得されたことも示しています。
この動作は、ログを記録する代わりに、テンプレートでアイテムをレンダリングしようとした場合にも発生します。
this.load('http://localhost:4567/posts')
.then(function(items) {
$.each(items, function(i, item) {
context.render('tmpl/item.mustache', {item: item})
.appendTo(context.$element());
});
});
...戻り値が3つの投稿のみのjson配列であることを念頭に置いて、テンプレートは正常に読み込まれていますが、データが挿入されておらず、上記のパスティの「未定義」行の数と同じ回数レンダリングされています:(
編集2
sammy.jsの.loadメソッドは、この呼び出しをjquery ajax呼び出しとは異なる方法で処理しますか?
また
上記の問題が発生しているのはなぜですか?