我使用express.js作为后端,使用backbone.js作为前端,使用MongoDB作为数据库。根据我传入的params获取单个帖子或帖子集合没有问题,但每当我尝试POST请求时,我都会收到错误。我已经厌倦了在我的模型上调用.save()但是,我得到了一个跨站点域错误。 这是我的代码的一部分
var Post = Backbone.Model.extend({
url: "/posts/new"
});
var Posts = Backbone.Collection.extend({
url: "/categories/all"
});
var PostView = Backbone.View.extend({
model: new Post(),
template: JST["post"],
new_template: JST["new_post"],
el: $(".page"),
events: {
"click .to_category": "updateCurrentCategory",
"submit .new_post": "create"
},
create: function (e){
e.preventDefault();
showLoader();
console.log("subbmited");
this.model.save();
hideLoader();
}
}
答案 0 :(得分:0)
您需要在express.js应用程序标题部分中包含跨域策略:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.get('/', function(req, res, next) {
// Handle the get for this route
});
然后,如果您使用ajax请求提交发布数据,则必须将crossDomain
设置为true
。
如果您希望强制执行跨域请求(例如JSONP) domain,将crossDomain的值设置为true。这允许,为 例如,服务器端重定向到另一个域。 (版本添加: 1.5)
http://api.jquery.com/jquery.ajax/
$.ajax({
type: 'POST',
url: 'your/url',
crossDomain: true, // set it to `true`
dataType: 'json',
success: function(responseData, textStatus, jqXHR) {
console.log('success');
},
error: function (responseData, textStatus, errorThrown) {
alert('POST failed.');
}
});