jQuery.ajax什么时候执行error
程序员文章站
2023-12-28 17:41:10
...
查看了源码:
得出结论:
1、statusCode是2xx时,会执行success回调函数;
2、statusCode是304时,会执行success回调函数;
3、statusCode为其他值,则会执行error回调函数;
4、datatype如果是json,而转换成json出错时会调用error回调函数。
403-禁止访问:
如果后台在认证拦截器中返回403, 则ajax则会执行回调error。
这样就可以在success函数专注写处理逻辑,把未登录无权限的提示放到error方法中处理,
以达到代码逻辑清晰内聚的效果。
// If successful, handle type chaining if (status >= 200 && status < 300 || status === 304) { // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if (s.ifModified) { if ((lastModified = jqXHR.getResponseHeader("Last-Modified"))) { jQuery.lastModified[ifModifiedKey] = lastModified; } if ((etag = jqXHR.getResponseHeader("Etag"))) { jQuery.etag[ifModifiedKey] = etag; } } // If not modified if (status === 304) { statusText = "notmodified"; isSuccess = true; // If we have data } else { try { success = ajaxConvert(s, response); statusText = "success"; isSuccess = true; } catch(e) { // We have a parsererror statusText = "parsererror"; error = e; } } } else { // We extract error from statusText // then normalize statusText and status for non-aborts error = statusText; if (!statusText || status) { statusText = "error"; if (status < 0) { status = 0; } } } // Set data for the fake xhr object jqXHR.status = status; jqXHR.statusText = "" + (nativeStatusText || statusText); // Success/Error if (isSuccess) { deferred.resolveWith(callbackContext, [success, statusText, jqXHR]); } else { deferred.rejectWith(callbackContext, [jqXHR, statusText, error]); } // Status-dependent callbacks jqXHR.statusCode(statusCode); statusCode = undefined; if (fireGlobals) { globalEventContext.trigger("ajax" + (isSuccess ? "Success" : "Error"), [jqXHR, s, isSuccess ? success : error]); }
得出结论:
1、statusCode是2xx时,会执行success回调函数;
2、statusCode是304时,会执行success回调函数;
3、statusCode为其他值,则会执行error回调函数;
4、datatype如果是json,而转换成json出错时会调用error回调函数。
403-禁止访问:
如果后台在认证拦截器中返回403, 则ajax则会执行回调error。
这样就可以在success函数专注写处理逻辑,把未登录无权限的提示放到error方法中处理,
以达到代码逻辑清晰内聚的效果。
推荐阅读
-
jQuery.ajax什么时候执行error
-
jQuery.ajax什么时候执行error
-
destruct 不对啊,其到底什么时候执行;
-
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
-
mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法
-
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
-
java执行-cp报错 error: could not load JDBC driver
-
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
-
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
-
jQuery的$.get()函数不执行以及php端报错Uncaught Error: Call to a member function bind_param() on boolean in...