如何检测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/