我是骨干的新手,我终于在一个小项目上取得了一些进展。我想我正在正确地执行ajax get请求,但我现在在浏览器中收到此错误:
" XMLHttpRequest无法加载https://api.flickr.com/services/rest/?jsoncallback=? Access-Control-Allow-Methods不允许使用FLICKR.PHOTOS.SEARCH方法。 "
如何在骨干网中启用CORS?
我的观点:
var PictureView = Backbone.View.extend({
//the goal of this app is to append HTML to the appID div. on button click, fetch a random image from flickr.
el: "#app",
initialize: function() {
$('.button').click(function() {
this.request()
}.bind(this))
},
request: function() {
console.log('asdfkjsf')
$.ajax({
url: "https://api.flickr.com/services/rest/?jsoncallback=?",
method: 'flickr.photos.search',
api_key: "mykey",
format: 'json',
nojsoncallback: 1,
per_page: 1,
success: function(result) {
console.log(arguments)
this.$el.append('<img src="' + result + '" />')
}.bind(this)
});
}
})
我的模特:
var Picture = Backbone.Model.extend({
defaults: {
image: ""
}
});
答案 0 :(得分:1)
要回答您的直接问题,请不要在Backbone中启用CORS。您(或者,更准确地说,在这种情况下,Yahoo)将在服务器上启用CORS,例如Flickr的。
但问题不在于CORS;你没有正确使用Flickr API。 $.ajax
调用的参数完全错误。 Flickr在REST documentation中提供了示例网址。
更重要的是,您通过从View发出API请求而严重滥用Backbone。这应该在模型或集合中完成。并且,鉴于上述细节,您不需要提供自己的AJAX调用;如果提供了正确的URL,标准Backbone.Sync
将正常工作。
我建议退一步,花一些时间学习REST API和Backbone最佳实践。网上有很多教程。一旦您对这些技术更熟悉,您就会发现开发应用程序要容易得多。