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