Javascript 主干网创建

Javascript 主干网创建,javascript,backbone.js,Javascript,Backbone.js,出于某种原因,this.collection.create()返回了一个错误,但有趣的是,错误消息看起来像是我刚刚添加到集合中的模型 this.collection.create({ name: $('#big-input').val(), firstRemark: $('#small-input').val(), postedBy: window.user.displayName, twitterHandle: window.user.twittername,

出于某种原因,this.collection.create()返回了一个错误,但有趣的是,错误消息看起来像是我刚刚添加到集合中的模型

this.collection.create({
    name: $('#big-input').val(),
    firstRemark: $('#small-input').val(),
    postedBy: window.user.displayName,
    twitterHandle: window.user.twittername,
    pictureUrl: window.user.profilePic

},{wait: true,    

  success: function(response){
     console.log("success");
     console.log(response)

  },
  error:function(err){
      console.log(err)

   }

});
这是我在console.log(err)之后得到的结果:

感谢下面的答案,我能够打印出我的“真实”错误。如下图所示,responseText为“OK”,而“status”为200。为什么这个响应触发的是成功而不是错误

我的集合中还有一个解析方法

parse: function(response){
    this.page = response.page;
    this.perPage = response.perPage;
    this.total = response.total;
    this.noofpages =response.noofpages;

    return response.posts;
},

error函数将接收backbone.js中
wrapError
函数中定义的3个参数

  model.trigger('error', model, resp, options);

因此,您的输出是正确的。您需要向error函数中添加一个变量来捕获响应(第二个参数),并将其记录下来,以帮助您进行调试。

这是意料之中的。看一看,它说错误回调将以
(model,xhr,options)
作为参数调用

如果需要响应的实际内容,可以从第二个参数
responseText
属性:
xhr.responseText
获取。jquery文档中有关于jqXHR元素的更多详细信息:

成功回调的参数也不太正确-需要
(模型、响应、选项)

编辑:

不完全确定这是否是您的问题的原因,但您的服务器应该在成功时返回200状态码和JSON模型。请看一下文档

通过查看代码,当将
wait:true
作为选项传递时,这看起来很重要,因为属性集使用服务器返回的属性进行扩展。请看一下主干使用的options.success函数,了解我的意思。如果您从服务器返回“OK”,肯定会出现问题,不过我不确定这是否就是您遇到的问题


EDIT2:对我上面写的稍加修改:返回值通过
Model.parse传递。由于您已经定义了自定义解析函数,服务器应该返回将要使用它的东西,而不仅仅是模型的纯JSON。

请求和响应看起来如何您的模型上有
validate
parse
方法吗?@kalley我的集合中有一个parse方法,已编辑我的回答您的服务器需要返回带有
200
请求的回复正文。请看这里:console.log(xhr.responseText)只打印“OK”。。这让我想知道为什么没有触发成功回调?@GorkemYurtseven我添加了一个可能的解释。但我不确定我是否正确。
  model.trigger('error', model, resp, options);