如何检测JQuery $ .get失败? 寻求简单的代码示例

我是一个JQuery n00b。 我正在尝试使用$ .get()编写一个非常简单的代码。 官方文件说

如果带有jQuery.get()的请求返回错误代码,它将无声地失败,除非该脚本还调用了全局.ajaxError()方法或。 从jQuery 1.5开始,jQuery.get()返回的jqXHR对象的.error()方法也可用于error handling。 

所以,如果一切顺利,我将调用成功的回调函数。 但是,如果请求失败,我想获取HTTP代码:404,502等,并为用户制定有意义的错误消息。

但是,由于这是一个异步调用,我可以想象我可能有几个未完成的。 .ajaxError()如何知道它对应哪个请求? 也许最好使用jQuery.get()返回的jqXHR对象的.error()方法?

有人可以请一个非常简单的代码示例吗? 也许成功例程调用Alert(“找到页面”)和失败例程检查404并执行警报(“找不到页面”)


更新:以下页面非常有用… http://api.jquery.com/jQuery.get/

你是对的,你可以使用jQuery 1.5的新jqXHR为$.get()请求分配error handling程序。 这是你如何做到的:

 var request = $.get('/path/to/resource.ext'); request.success(function(result) { console.log(result); }); request.error(function(jqXHR, textStatus, errorThrown) { if (textStatus == 'timeout') console.log('The server is not responding'); if (textStatus == 'error') console.log(errorThrown); // Etc }); 

您还可以直接将处理程序链接到调用上:

 $.get('/path/to/resource.ext') .success(function(result) { }) .error(function(jqXHR, textStatus, errorThrown) { }); 

我更喜欢前者保持代码不那么纠结,但两者都是等价的。

.get()只是.ajax()的同义词,预先设置了许多选项。 使用ajax()获取所有选项,包括error回调。

 $.ajax({ type: "GET", url: "test.htm", error: function(xhr, statusText) { alert("Error: "+statusText); }, success: function(msg){ alert( "Success: " + msg ); } } ); 

从jQuery 3.0开始, .success().error()被折旧。
您可以使用.done().fail()代替

 $.get( url ) .done(function( data, textStatus, jqXHR ) { console.log(data); }) .fail(function( jqXHR, textStatus, errorThrown ) { console.log(jqXHR); console.log(textStatus); console.log(errorThrown ); }); 

资料来源: https : //api.jquery.com/jQuery.ajax/