Javascript 主干网创建
出于某种原因,this.collection.create()返回了一个错误,但有趣的是,错误消息看起来像是我刚刚添加到集合中的模型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({
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);