我有一组$.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中第二次成功回调的原因。我想它可能是用来设置回调链的。我希望error在错误中执行,而success在成功时执行。那么,这是正确的吗?
发布于 2011-10-04 02:12:06
我认为示例中的第二个成功回调只是为了说明,使用此语法,您可以为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()语法,而且由于您不需要其他语法中提供的特殊功能(多个处理程序、请求后处理程序赋值),所以没有理由不使用$.ajax()
$.ajax({
url: url,
success: function(data) {
// success, do work
},
error: function(data) {
// error, handle failure
},
dataType:'json'
});发布于 2013-05-11 02:00:41
这个页面有很多关于jqXHR (jQuery XHR)与XHR (XMLHttpRequest)区别的文档。
http://api.jquery.com/jQuery.ajax/#jqXHR
发布于 2011-10-04 02:14:42
您正在使用的代码应该没有问题。第二次成功只是您可以定义成功方法的另一个地方。有些人使用jqxhr成功,而不是传递给$.get()的成功,还有一些人使用延迟对象的done处理程序来做同样的事情。
https://stackoverflow.com/questions/7638847
复制相似问题