Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Backbone.js发送post请求将返回跨域错误_Javascript_Backbone.js - Fatal编程技术网

Javascript 从Backbone.js发送post请求将返回跨域错误

Javascript 从Backbone.js发送post请求将返回跨域错误,javascript,backbone.js,Javascript,Backbone.js,我使用express.js作为后端,backbone.js作为前端,MongoDB作为数据库。我可以根据传入的参数获取单个帖子或帖子集合,但是每当我尝试一个帖子请求时,我都会得到一个错误。我已经厌倦了在我的模型上调用.save(),但是,我得到了一个跨站点域错误。 这是我的部分代码 var Post = Backbone.Model.extend({ url: "/posts/new" }); var Posts = Backbone.Collection.extend({ url:

我使用express.js作为后端,backbone.js作为前端,MongoDB作为数据库。我可以根据传入的参数获取单个帖子或帖子集合,但是每当我尝试一个帖子请求时,我都会得到一个错误。我已经厌倦了在我的模型上调用.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();
  }
}

您需要在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请求提交post数据,则必须将
跨域
设置为

如果您希望在同一服务器上强制执行跨域请求(如JSONP) 域,将crossDomain的值设置为true。这就允许 例如,服务器端重定向到另一个域。(新增版本: (1.5)


在将上述代码放入服务器文件和主干文件之后,我仍然存在同样的问题。在传入crossDomain:true时,我还尝试了backbone.save()函数,甚至尝试了数据类型“jsonp”也包括这个:
res.header('Access-Control-Allow-Methods'、'GET、PUT、POST、DELETE、OPTIONS')谢谢你的帮助,但仍然没有骰子。到底是什么错误。。?
$.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.');
    }
});