我有一组$.get()
个请求需要重构才能包含失败回调。请求的格式为
$.get(url,
{},
function(data) {//success, do work
//work
},'json');//or 'html'
根据jQuery API,我只需添加一个jqHXR对象。所以在我的情况下,我相信我应该做
var jqxhr = $.get(url,
{},
function(data) {//success, do work
//work
},'json').error(function() { alert("error"); });//or 'html'
我不明白the example中第二次成功回调的原因。我想它可以用于建立一个回调链。我希望错误执行错误,并成功执行成功。那么,这是正确的吗?
答案 0 :(得分:12)
我认为示例中的第二个成功回调就是说明,使用此语法,您可以为success
,error
和complete
事件提供多个处理程序。在标准的jQuery .ajax()
方法中,您只能为每个事件分配一个处理程序。我无法想象需要多个处理程序的示例,但它看起来更清晰,更像是使用的标准jQuery习惯用法
$.get('my_url.php')
.success(handlerOne)
.success(handlerTwo);
而不是
$.get('my_url.php', function(data, textStatus, jqXHR) {
handlerOne(data, textStatus, jqXHR);
handlerTwo(data, textStatus, jqXHR);
});
但是,在您的情况下,将$.get()
语句转换为$.ajax()
可能会更容易,更简洁。大多数jQuery程序员可能更熟悉$.ajax()
语法,并且由于您不需要其他语法中提供的特殊功能(多个处理程序,后请求处理程序分配),因此没有理由不使用{ {1}}:
$.ajax()
答案 1 :(得分:4)
这个页面有很多关于jqXHR(jQuery XHR)与XHR(XMLHttpRequest)有什么不同的文档。
答案 2 :(得分:2)
您使用的代码应该没问题。第二个成功只是另一个可以定义成功方法的地方。有些人使用jqxhr
成功而不是传递给$.get()
的成功,而其他人使用延迟对象的done处理程序来做同样的事情。