我有一个 Backbone Collection 对象,其 URL 为 http://localhost:8080/api/menu/1/featured
。
我正在尝试执行提取操作以从 URL 检索集合并解析它。但是,在服务器端,我看到此请求的方法类型是 OPTIONS。服务器只假设支持 GET 方法。我不确定 Backbone 如何确定要使用的方法类型,以及为什么它有时会随机更改为 OPTIONS 方法类型。我正在使用 Node.js 服务器来处理请求。下面这段代码几乎就是我所做的。
var FeaturedCollection = Backbone.Collection.extend({
model:FeaturedContent,
url:function () { return url_featured; },
parse:function (response) {
console.log(response);
return response;
}
});
var featuredCollection = new FeaturedCollection();
featuredCollection.fetch();
最佳答案
已经有一段时间了,但我记得以前遇到过这个问题。这可能有两件事:默认情况下,Backbone 会尝试对您的后端执行 RESTful API 调用,这意味着 GET、POST、PUT 和 DELETE。
许多后端没有构建真正的 REST 支持,只支持 GET 和 POST。当 Backbone 发送 PUT 或 DELETE 命令时,您的浏览器(不是 Backbone)会首先自动发送一个 OPTIONS 请求,以查看是否允许它发出此类请求。如果您的服务器响应不正确,此调用将失败,并且 Backbone 可能不会执行任何操作。
要解决此问题,请设置 Backbone.emulateHTTP = true;
或者让您的服务器正确响应 OPTIONS 调用。有关详细信息,请参阅文档:http://backbonejs.org/#Sync-emulateHTTP
另一个问题是您正在跨域/子域发出 ajax 请求,您需要正确启用 CORS。这还包括正确回答 OPTIONS 请求。
关于javascript - Backbone 获取请求是 OPTIONS 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11300874/