这是我的js代码。
我正在使用最新的jQuery和Backbone库。
(function(Tweet) {
//Tweet.Model = Backbone.Model.extend();
Tweet.Collection = Backbone.Collection.extend({
url: function() {
return "http://search.twitter.com/search.json?q=twitterapi&callback=?";
},
parse: function(data) {
return data.results;
}
});
Tweet.Views.List = Backbone.Layout.extend({
template: "#list",
events: {
"click li": "update"
},
update: function(ev) {
var index = $(ev.target).index();
var model = this.collection.at(index);
this.trigger("update", model);
},
serialize: function() {
return { tweets: this.collection };
}
});
Tweet.Views.Detail = Backbone.Layout.extend({
template: "#detail",
serialize: function() {
return { tweet: this.model };
}
});
}) (twitter.module("tweet"));
当我运行网址http://search.twitter.com/search.json?q=twitterapi&callback=时?在我的浏览器上,我可以看到结果。
所以我与twitter有联系。
当我删除回调=?从我的代码中的url,我得到了Cross Domain错误。
所以这意味着我的jQuery和Backbone版本已经足够更新,可以自动将我的请求格式化为jsonp回调。
但我不断收到403错误。
以下是Chrome控制台以红色表示的错误:
GET http://search.twitter.com/search.json?q=twitterapi&callback=jQuery19107466092116665095_1364193857160&_=1364193857161 403 (Forbidden)
请帮助我理解我是否在做错了什么?
更新
我根据一些建议尝试了以下内容。
我添加了https://github.com/jacebeleren/backbonelayoutmanager/commit/6af9a367cea5bcf460b67319137d6f077b1ff5ec
..而且这个 https://github.com/jacebeleren/backbonelayoutmanager/commit/01cfba1c416673617591b0c936e41a27b93bbf51
但错误仍然存在。
更新2
这些是403错误的请求标题。
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:pid=v3:1364189785315637597538615; guest_id=v1%3A136419139351112726; k=10.35.60.125.1364192963733514; __utma=43838368.881187358.1364192967.1364192967.1364192967.1; __utmc=43838368; __utmz=43838368.1364192967.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _twitter_sess=BAh7CToPY3JlYXRlZF9hdGwrCKCsPKA9AToMY3NyZl9pZCIlNzc0NjU5ZmQ5%250AN2Q4MjA0M2RjYzQzMjMyZTFjMDk3ZTkiCmZsYXNoSUM6J0FjdGlvbkNvbnRy%250Ab2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7AAY6CkB1c2VkewA6B2lkIiUxZTc3%250AMTFiNjcwN2M0OWM0OTVmMDA0ODgxNTQ1MzdkZA%253D%253D--43c3e3ef6a53296eb8f6640c3e9dc21539f18ef6
Host:search.twitter.com
Referer:http://bblm.localhost/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
答案 0 :(得分:0)
Backbone不会自动格式化您对JSONp调用的请求。您需要在jQuery的fetch调用中发送{ dataType: "jsonp" }
来格式化它。