如果我正在使用的XHR请求返回HTTP 200以外的其他内容(例如,如果存在内部服务器错误或服务器完全超时),是否有一些代码可以添加到Jeditable以引发错误?
我尝试添加回调参数(如下所示),但它似乎只在AJAX请求成功时触发...
$('.foo').editable('/user/ajax_edit_full_name',
{
indicator: 'Saving...',
cancel : 'Cancel',
submit : 'Save',
cssclass : 'editable',
callback : function(value, settings) {
console.log(this);
console.log(value);
console.log(settings);
}
}
);
更新除了Bruno的回答之外,除了'status'属性之外,xhr还有xhr.statusText
。所以在我的情况下,如果他们指定一个空名称(无效),我将服务器设置为发送错误400加上自定义消息,并显示后者。
答案 0 :(得分:5)
根据Jeditable source code,有一个名为onerror
@param Function options[onerror] function(settings, original, xhr) { ... } called on error
因此,通过在onerror
函数上添加参数editable
,可以实现您要执行的操作。 onerror
参数需要以下列格式作为参数:
function(settings, original, xhr) { ... }
xhr
参数是XHR Object
的位置。因此,您可以在onerror
函数中处理错误,而不是尝试捕获错误。如下所示:
$('.foo').editable('/user/ajax_edit_full_name',
{
indicator: 'Saving...',
cancel : 'Cancel',
submit : 'Save',
cssclass : 'editable',
onerror : function(settings,original,xhr){
alert("It wasn't possible to edit. Try again");
console.log("XHR Status: " + xhr.status);
},
callback : function(value, settings) {
console.log(this);
console.log(value);
console.log(settings);
}
});
我希望它有所帮助。