搜索
您的当前位置:首页Ajax调用错误如何处理

Ajax调用错误如何处理

2023-11-29 来源:恩希娱乐
导读如今前端领域是MVVM框架的天下,组件库也层出不穷,但是,并没有一个知名的组件库提供ajax异常的成熟解决方案,所以今天我们就来研讨一下,如何尽量正确地处理异常。 从业务上简单说,凡是code不是200的,都是异常。这里code可以是HTTP状态码,也可以是响应体的code,就不细究了,反正本质没差别。然后,根据code的不同,又可以细分成401 403 404 500等等。 如果你的后端伙伴以HTTP状态码表示404,以响应体code表示其他错误,而且你又无法劝说他们,那么你应在axi
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。

Ajax = 异步 JavaScript 和 XML 或者是 HTML(标准通用标记语言的子集)。

Ajax 是一种用于创建快速动态网页的技术。

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

AJAX调用错误处理

当Ajax调用返回404或500错误时,就执行错误处理程序。如果没有定义处理程序,其他的jQuery代码或会就此罢工。定义一个全局的Ajax错误处理程序:

$(document).ajaxError( function (e, xhr, settings, error) { console.log(error); });

小编还为您整理了以下内容,可能对您也有帮助:

前端如何尽量正确地处理ajax的异常?

如今前端领域是MVVM框架的天下,组件库也层出不穷,但是,并没有一个知名的组件库提供ajax异常的成熟解决方案,所以今天我们就来研讨一下,如何尽量正确地处理异常。

从业务上简单说,凡是code不是200的,都是异常。这里code可以是HTTP状态码,也可以是响应体的code,就不细究了,反正本质没差别。然后,根据code的不同,又可以细分成401 403 404 500等等。

如果你的后端伙伴以HTTP状态码表示404,以响应体code表示其他错误,而且你又无法劝说他们,那么你应在axios的里把各种情况全考虑进去,比如:

超时很简单,axios也支持,设定超时阈值即可。超时跟无响应的区别是,超时意味着HTTP三次握手成功,但是得不到响应体,浏览器知道接口是存在的,但是响应体又在规定时间内没有拿到。无响应是根本无法HTTP握手,也就无法获知接口存在。

处理超时,通常做法是在里重新请求一遍,还是超时的话就视为服务器错误。

得不到响应又分成2种,可能是网断了,也可能是服务器停机了。

苛刻地说,你应分辨这2种情况,并给出不同的提示,毕竟网断了,用户可以寻找别的联网方式,而服务器停机了就给个重连按钮,让用户有事没事的尝试重连一下。

关于解决方案,首先说,XHR对象无法区分到底断网还是服务器停机,axios对于2种情况都返回'Network Error'。在得到这个反馈之后,你接下来可以有这2种解决办法:

你可以将 https://api.map.baidu.com/images/blank.gif 改成其他服务器稳定且字节小的图片。或许你可以做一张几字节的图片,传到一个非常牛的CDN上。

MDN手册: https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/connection

它不支持IE,就算你不在乎这一点,那么它是不是一定准呢?对于需要登录的VPN网络,它是否准呢?我也不知道,总体说,它真的不是最佳的方案。我推荐用方案1。

很简单,分为3种:

通常,一个接口,只需要按照其中一种去处理即可,优先级就是上面书写顺序。

容器内错误提示肯定是内容区的接口出错才会出现。

处理方式:

局部报错比较容易理解,比如一个List的接口出错,那么,上策是应当给这个容器尽量撑高到有内容时的高度,然后居中给一个错误图标和错误描述。中策是不考虑有内容时候的高度,只让错误提示和错误描述撑起一定高度即可。都不算错。如果容器很小,比如就是一个3位数值,那么用一个 - 表示错误也可以。

页面整体报错稍微复杂,比如一个左右结构的内容管理系统,前置接口有userInfo接口、全局字典接口、全局路由接口等,这些接口与众不同的地方在于它们是基础接口,它们出错的话,网站干脆就不能用,页面骨架也是错乱的,这种情况下可以有2种解决办法:一是跳转到专门的5xx报错页面,页面有错误图标、错误提示,以及“返回上一页”的按钮;二是用白板遮罩覆盖浏览器视口,居中放一个错误图标和错误文字以及“刷新页面”的按钮,本质是用一个fixed的遮罩压住浏览器全部面积。用哪种方案都可。所以你要做的是决定哪些接口属于全局报错,哪些接口属于局部报错,并做不同的处理。

报错内容:

根据ajax异常的分类,可能至少能分出3种:网络错误、服务器宕机、服务器错误。具体用什么图标和文字我就不多说了。

组件化:

容器内报错应尽量组件化。该放返回上一页或刷新按钮的,一定要放按钮。

排他性:

只要做了容器内报错,就不要做另外报错了。这也说明了一点,就是在axios里弹toast或者modal是愚蠢的方案,我在别的文章也提到过这种观点。不做容器内报错的情况,才应该考虑其他3种情况。

什么样的场景下使用容器隐藏?

比如页面有一个角落显示你的粉丝数、关注数、评论量……。如果有获取到数据,则让这个容器出现,没有的话,则容器就保持隐藏。这一类场景往往应用于非主要内容,比如侧边栏的小内容块。

由于这只适用于非主要内容,那么主要内容也会有它自己的报错,所以,你不必担心用户看不到“网络出错”这类错误提示。

先简单对比一下toast和modal。

很简单,toast就是轻提示,不需要手动关闭,modal就是重提示,需要手动关闭。采用哪个,只要站在用户角度思考问题就好了。比如有人说,异常应当用重提示。可以这么绝对化么?不可以。比如你在某个页面点赞,提示你 “您已经点过赞了” ,这用重提示吗?肯定toast就够了。同样的,成功提示一定用轻提示吗?比如提示 “感谢参与,工作人员将在3~5个工作日内联系你” ,这么长,能toast?能一闪而过?

什么接口适用弹出提示?简单说,只要跟UI显示不相干的,都最好是使用弹出提示。比如这几种场景:

先说上传数据断网之类的错误,通常用modal,因为modal能够拦截用户动作,避免重复上传,而且,还能给用户足够的时间让用户看清楚出错原因,避免无谓的重试。

然后说数据内容错误,无论是表单提交,还是点个赞,错误提示一般用toast,毕竟用户可能只是不小心填错的,看一眼然后赶紧改正就好了。

最后说401错误,有2种做法,一是用modal,因为一般要强制用户转到登录页,但是转之前也得让用户看明白为什么要转,所以可以先modal提示,点击确定就跳转到登录页;二是用toast,但是需要先跳转,然后在登录页上提示toast“请先登录”。

警告条

警告条是可关闭的、永久生命的、又不妨碍用户继续操作的弹出组件,一般在页面顶部,或者在用户操作区域的附近。什么场景用警告条?

比如的MD编辑器,你只要输入,就会自动给服务器发送数据,频率很快,有时候因为网络或者服务器的问题,会出现保存失败的可能性,这时候就会在页面顶部出现一个比较长时间的警告条,告诉你保存失败,但你依然可以继续写,什么时候网络正常了,什么时候toast才会自动消失,当然你也可以手动关闭它。

总之,toast、modal、警告条究竟什么场合使用,要根据产品、业务具体而定,要注意优先使用容器内报错和容器隐藏。

jquery中ajax使用error调试错误的方法

本文实例讲述了jquery中ajax使用error调试错误的方法。分享给大家供大家参考。具体分析如下:
JQuery使我们在开发Ajax应用程序的时候提高了效率,减少了许多兼容性问题,我们在Ajax项目中,遇到ajax异步获取数据出错怎么办,我们可以通过捕捉error事件来获取出错的信息。
jquery中ajax的常用用法类似于:
$(document).ready(function()
{
jQuery("#clearCac").click(function()
{
jQuery.ajax({
url:
url,
type:
"post",
data:
{
id:
'0'
},
dataType:
"json",
success:
function(msg)
{
alert(msg);
},
error:
function(XMLHttpRequest,
textStatus,
errorThrown)
{
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
},
complete:
function(XMLHttpRequest,
textStatus)
{
this;
//
调用本次AJAX请求时传递的options参数
}
});
});
});
当通过ajax异步调用成功时,会调用
success函数
。success函数语法为:
//请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态
function
(data,
textStatus)
{
//
data
could
be
xmlDoc,
jsonObj,
html,
text,
etc...
this;
//
the
options
for
this
ajax
request
}
当通过ajax异步调用出错时,会调用
error函数
。error函数语法为:
//(默
认:
自动判断
(xml

html))
请求失败时调用时间。
//参数有以下三个:XMLHttpRequest
对象、错误信息、(可选)捕获的错误对象。
//如果发生了错误,错误信息(第二个参数)除了得到null之外,
//还可能是"timeout",
"error",
"notmodified"

"parsererror"。
//textStatus:
"timeout",
"error",
"notmodified"

"parsererror"。
error:function
(XMLHttpRequest,
textStatus,
errorThrown)
{
}
error事件返回的第一个参数XMLHttpRequest:
XMLHttpRequest.readyState:
状态码的意思
0

(未初始化)还没有调用send()方法
1

(载入)已调用send()方法,正在发送请求
2

(载入完成)send()方法执行完成,已经接收到全部响应内容
3

(交互)正在解析响应内容
4

(完成)响应内容解析完成,可以在客户端调用了

发送error可能有下面两张引起的,或者其他程序问题,需要我们认真仔细。
1、data:"{}",
data为空也一定要传"{}";不然返回的是xml格式的。并提示parsererror.
2、parsererror的异常和Header
类型也有关系。及编码header('Content-type:
text/html;
charset=utf8');
希望本文所述对大家的jQuery程序设计有所帮助。

jquery中ajax使用error调试错误的方法

本文实例讲述了jquery中ajax使用error调试错误的方法。分享给大家供大家参考。具体分析如下:
JQuery使我们在开发Ajax应用程序的时候提高了效率,减少了许多兼容性问题,我们在Ajax项目中,遇到ajax异步获取数据出错怎么办,我们可以通过捕捉error事件来获取出错的信息。
jquery中ajax的常用用法类似于:
$(document).ready(function()
{
jQuery("#clearCac").click(function()
{
jQuery.ajax({
url:
url,
type:
"post",
data:
{
id:
'0'
},
dataType:
"json",
success:
function(msg)
{
alert(msg);
},
error:
function(XMLHttpRequest,
textStatus,
errorThrown)
{
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
},
complete:
function(XMLHttpRequest,
textStatus)
{
this;
//
调用本次AJAX请求时传递的options参数
}
});
});
});
当通过ajax异步调用成功时,会调用
success函数
。success函数语法为:
//请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态
function
(data,
textStatus)
{
//
data
could
be
xmlDoc,
jsonObj,
html,
text,
etc...
this;
//
the
options
for
this
ajax
request
}
当通过ajax异步调用出错时,会调用
error函数
。error函数语法为:
//(默
认:
自动判断
(xml

html))
请求失败时调用时间。
//参数有以下三个:XMLHttpRequest
对象、错误信息、(可选)捕获的错误对象。
//如果发生了错误,错误信息(第二个参数)除了得到null之外,
//还可能是"timeout",
"error",
"notmodified"

"parsererror"。
//textStatus:
"timeout",
"error",
"notmodified"

"parsererror"。
error:function
(XMLHttpRequest,
textStatus,
errorThrown)
{
}
error事件返回的第一个参数XMLHttpRequest:
XMLHttpRequest.readyState:
状态码的意思
0

(未初始化)还没有调用send()方法
1

(载入)已调用send()方法,正在发送请求
2

(载入完成)send()方法执行完成,已经接收到全部响应内容
3

(交互)正在解析响应内容
4

(完成)响应内容解析完成,可以在客户端调用了

发送error可能有下面两张引起的,或者其他程序问题,需要我们认真仔细。
1、data:"{}",
data为空也一定要传"{}";不然返回的是xml格式的。并提示parsererror.
2、parsererror的异常和Header
类型也有关系。及编码header('Content-type:
text/html;
charset=utf8');
希望本文所述对大家的jQuery程序设计有所帮助。

ajax调用返回错误信息

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。

Ajax = 异步 JavaScript 和 XML 或者是 HTML(标准通用标记语言的子集)。

Ajax 是一种用于创建快速动态网页的技术。

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

AJAX调用错误处理

当Ajax调用返回404或500错误时,就执行错误处理程序。如果没有定义处理程序,其他的jQuery代码或会就此罢工。定义一个全局的Ajax错误处理程序:

$(document).ajaxError( function (e, xhr, settings, error) { console.log(error); });

ajax调用返回错误信息

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。

Ajax = 异步 JavaScript 和 XML 或者是 HTML(标准通用标记语言的子集)。

Ajax 是一种用于创建快速动态网页的技术。

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

AJAX调用错误处理

当Ajax调用返回404或500错误时,就执行错误处理程序。如果没有定义处理程序,其他的jQuery代码或会就此罢工。定义一个全局的Ajax错误处理程序:

$(document).ajaxError( function (e, xhr, settings, error) { console.log(error); });

jquery ajax返回Internal server error 500错误怎么解决

首先ajax返回500错误一般情况是服务器端错误,一般可以采用ajax调试或者浏览器调试的方式查看错误。

方式1:ajax调试-

$.ajax({

url:"ajax.php",//请求的页面地址

  type:'post', //请求数据的方式 get post

  dataType:'text', //数据返回的方式 text html json

  success:function(data) {

          //请求之后,响应成功执行

         alert(data);

     }, 

  error: function(XMLHttpRequest, textStatus, errorThrown) {

                        alert(XMLHttpRequest.status);

                        alert(XMLHttpRequest.readyState);

                        alert(textStatus);

                    },

 });

方式2-浏览器调试:按下F12查看网络请求返回的错误原因。

ajax跨域请求jsonp出现Uncaught SyntaxError,该如何解决?

Jquery文档中描述,jsonp:”callback”, jsonpCallback:”success_jsonpCallback”,传递这两个参数是有原因的,jsonp的返回数据格式应该是: “客户端传递的回调方法名称(json数据)”。

比如将这段代码

<?php 

$arr = array ('username'=>'jack','age'=>21,'gender'=>'male'); 

echo json_encode($arr);

?>

改为

<?php 

$arr = array ('username'=>'jack','age'=>21,'gender'=>'male'); 

echo $_GET['callback']."(".json_encode($arr).")";

?>

找到两段代码的区别就知道怎么解决啦。

ajax跨域失败,是因为js遵循同源规则,即不同域名下的js访问是不被允许的(安全考虑),那么如何解决,主要有三个方法:

第一个是修改服务器,ajax返回数据,也就是dataType类型设置为jsonp,jsonp是专门为解决跨域问题而生的,具体用法自行百度。

第二个方法,就是先用自己服务器后台执行curl,抓取目标服务器上的文件,在用前端ajax获取服务器后台获取到的目标服务器文件结果即可。

恩希娱乐还为您提供以下相关内容希望对您有帮助:

怎么解决ajax方法请求服务器失败?

如果是跨域问题,可以在服务器端进行相应的设置,允许跨域请求;若是服务器端出错,需要检查服务器代码并进行相应修复。在网络不稳定的情况下,可以增加错误处理和重试机制,以提高请求的稳定性。

前端如何尽量正确地处理ajax的异常?

处理方式:局部报错比较容易理解,比如一个List的接口出错,那么,上策是应当给这个容器尽量撑高到有内容时的高度,然后居中给一个错误图标和错误描述。中策是不考虑有内容时候的高度,只让错误提示和错误描述撑起一定高度即可。

ajax调用返回错误信息

然后在ajax的回调函数中读取这个错误信息就可以了aeim比如在struts2中,你定义一个变量errorMessage并定义一个变量jsonStatus。如果程序正常则jsonStatus为true,出现异常jsonStatus为false.前台这么处理¥.post(url,null,functi...

jquery中ajax使用error调试错误的方法

当通过ajax异步调用成功时,会调用 success函数 。success函数语法为://请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态 function (data,textStatus){ // data could be xmlDoc,jsonObj,html,text,etc....

c#Ajax 的错误,应该如何解决?

如果使用C#编写ASP.NET网站时遇到此问题,应该是Web.Config文件的错误,或此文件中指定的Ajax的dll文件找不到。把Ajax安装目录中的两个dll文件复制到网站的bin目录下,即可解决第二种问题。第一种的解决:新建一个Ajax网站,...

php如何处理ajax请求phpajax请求

首先,ajax在。tp需要用大U法。比如:$。帖子(用户/添加)}失败,,真);第三个参数为true,是json数据,包括info.status.url。3.在控制器中返回结果的第二种方法。$this--&gt;:Ajaxreturn(array(customKey1自定义值1,...

jQuery ajax,一直调用error方法。

1、首先在页面代码上,先引入jquery脚本文件。2、然后添加一个div,div里的内容是空的。3、下方添加一个按钮,用来触发ajax请求。4、在按钮的事件函数上,直接调用jquery的 $.ajax方法,方法里url就是要调用的请求链接。

jquery ajax 值传过去了 但是提示错误,就是会运行error:function(){...

检查后台是否报错。检查返回值是否为 success 。部分数据格式错误,需要eval(date)操作F12 打开,发送ajax请求,查看network 里边是否报错,或者在返回值的位置 添加 console.log()查看返回参数。.ajax({ cache: true, ...

使用ajax是出现网页上有错误怎么解决

首先,我们来介绍下手动解决网页上有错误解决方法(操作较繁琐)1、点击“开始”菜单,打开“运行”。2、输入regsvr32 jscript.dll后选择“确定”。 出现提示(jscript.dll中的DIIRegisterServer成功)后,点击“确定”。3、...

jquery ajax返回Internal server error 500错误怎么解决?

它的高性能主要体现在高速度的运算能力、长时间的可靠运行、强大的外部数据吞吐能力等方面。服务器的构成与微机基本相似,有处理器、硬盘、内存、系统总线等,它们是针对具体的网络应用特别制定的,因而服务器与微机在处理能力、...

Top