【发布时间】:2014-03-11 01:37:18
【问题描述】:
我已阅读有关此问题的其他几篇文章,但似乎没有一个解决方案对我有用。我的视图中有以下代码:
this.model.set({
username: $('#user-username').val(),
role: $('#user-role').val(),
description: $('#user-description').val()
});
this.model.save({ user_id: this.model.get('user_id')}, {
success: function(user, response) {
console.log('success:', response);
$('.flash-message').text("Success").show();
},
error: function(user, response) {
console.log('error:', response);
$('.flash-message').text(response.error).show();
}
});
这在我的服务器控制器上(运行 express 3 的 nodejs):
UserController.prototype.updateAction = function(req, res) {
if (req.route.method != "put") {
res.send({status: "error", error: "update must be put action and must include values"});
return false;
}
var query = {'user_id': req.params.id};
var user = req.body;
var userRepository = this.userRepository
// delete _id to avoid errors
delete user._id;
userRepository.update(query, user, {}, function(err, updated) {
if ((err) || (!updated)) {
res.send({"status": "error", "error": err});
return false;
}
// send updated user back
util.log('updated user ' + user.user_id);
res.setHeader('Content-Type', 'application/json');
res.status(200);
res.send(JSON.stringify({"status": "success", "updated": updated}));
});
}
保存时,我的模型已正确保存在服务器中,并且我已使用 this 验证了服务器响应。因此,据我所知,服务器正在返回状态 200、有效的 JSON,以及有效的 JSON 响应标头。然而我的主干 model.save 函数总是触发错误回调。谁能告诉我为什么以及如何解决这个问题?
如果将 dataType 设置为这样的文本,我可以让它工作:
this.model.save({ user_id: this.model.get('user_id')}, {
dataType: "text",
success: function(user, response) {
console.log('success:', response);
$('.flash-message').text("Success").show();
},
error: function(user, response) {
console.log('error:', response);
$('.flash-message').text(response.error).show();
}
});
但是这样做不允许我从服务器获取响应。相反,我在响应变量中得到了这个:
success: {
"_id": "5133b02062e15ed1d2000001",
}
【问题讨论】:
标签: backbone.js