理解jQuery的jqXHR

我有一组$.get()请求,我需要重构以包含失败回调。 请求是forms的

 $.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' 

我不明白示例中第二次成功回调的原因。 我想它可以用于建立一个回调链。 我希望错误执行错误,并成功执行成功。 那么,这是正确的吗?

我认为示例中的第二个成功回调就是说明,使用这种语法,您可以拥有多个successerrorcomplete事件的处理程序。 在标准的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()可能更简单,更$.ajax() 。 大多数jQuery程序员可能更熟悉$.ajax()语法,并且由于您不需要其他语法中提供的特殊function(多个处理程序,请求后处理程序分配),因此没有理由不使用$.ajax()

 $.ajax({ url: url, success: function(data) { // success, do work }, error: function(data) { // error, handle failure }, dataType:'json' }); 

这个页面有很多关于jqXHR(jQuery XHR)与XHR(XMLHttpRequest)有什么不同的文档。

http://api.jquery.com/jQuery.ajax/#jqXHR

你正在使用的代码应该没问题。 第二个成功只是另一个可以定义成功方法的地方。 有些人使用jqxhr成功而不是传递给$.get() ,而其他人使用延迟对象的done处理程序来做同样的事情。