我想知道在新模型、更新模型或删除模型上管理服务器错误响应的最佳方法。此时服务器返回一个http状态码#400。但是Backbone中的默认错误处理程序没有显示错误。
我怎样才能显示这些错误?
当服务器端验证失败时,服务器返回 http 错误标头可以吗?(也许更好地返回带有 status='ERROR' 消息的成功响应)
我想知道在新模型、更新模型或删除模型上管理服务器错误响应的最佳方法。此时服务器返回一个http状态码#400。但是Backbone中的默认错误处理程序没有显示错误。
我怎样才能显示这些错误?
当服务器端验证失败时,服务器返回 http 错误标头可以吗?(也许更好地返回带有 status='ERROR' 消息的成功响应)
如果您返回的 http 状态不是 2XX,那么您已经完成了一半的工作。:-) 基本上,您可以做的就是将您想要的任何内容作为响应发回。
例如,您可能只发回如下内容:
// Send back http status 500
echo 'Could not save, server error';
500 状态将触发 Backbone 错误回调,并且您的响应是一个 jqXHR 对象。在上面的示例中,您可以通过在错误回调中执行类似的操作来获取消息。
model.save({},{
error: function(model, response) {
console.log(response.responseText);
}
});
这是获取有关服务器端发生的错误的一些数据/消息的最简单方法。当然,您可以创建更复杂的数据以从服务器返回:
// I'm using SLIM RESTful framework...
$dataOut = array('error'=>'Validation type', 'message'=>'Did not validate');
$response->body(json_encode($dataOut));
以同样的方式,您可以像这样访问该响应:
model.save({},{
error: function(model, response) {
var responseObj = $.parseJSON(response.responseText);
console.log('Type: ' + responseObj.error + ' Message: ' + responseObj.message);
}
});
或类似的规定。
因为传递给错误回调的响应是 jqXHR 对象,所以您可以完全访问它的所有可能要使用的属性:
E.g.
response.readyState
response.status
response.statusText // etc.
Backbone 只需要从服务器返回的 http 状态就可以完成它的工作。