我想知道是否有使用 Sammy.js 经验的人有使用跨域资源共享的解决方案?
编辑
最初的问题基本上只是询问人们可能使用什么方法来使用 Sammy.js 完成 CORS,例如覆盖 .load() 方法或类似的方法。
我遇到的问题是,在尝试与位于不同域(启用 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);
});
});
... 一切都不是很好,萤火虫控制台显示http://pastie.org/4051256虽然萤火虫也表明 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());
});
});
...请记住,返回是一个只有三个帖子的 json 数组,模板已成功加载,但没有注入任何数据,并且它的呈现次数与上述粘贴中的“未定义”行数相同:(
编辑 2
sammy.js 中的.load方法如何将此调用与 jquery ajax 调用区别对待?
或者
为什么会出现上述问题?