$ajax textstatus报错parsererror

今天发现在返回值正确的情况下,ajax走error方法,没有走success方法,使用以下方法自测

原代码:
$.ajax({
      url: environment.serverUrl + '/questionClassify/modify',
      type: 'put',
      data: JSON.stringify(body),
      async: false,
      // 返回的数据类型是json
     dataType: 'application/json',
     contentType: 'application/json;charset=UTF-8',
     success: function (data) {
         alert(data.message);
     },
     error: function (data) {
        alert(data.responseText);
     }
});

自测修改代码:
error: function (XMLHttpRequest, textStatus, errorThrown) {
     alert(XMLHttpRequest.status);
     alert(XMLHttpRequest.readyState);
     alert(textStatus);
 }

运行结果:

alert(XMLHttpRequest.status);   // 弹出 200 正常
alert(XMLHttpRequest.readyState); // 弹出 4 正常
alert(textStatus);  // 弹出parsererror错误

parsererror错误是返回类型错误,在原代码中dataType: ‘application/json’,我指定了返回值为json,所以后端一定要返回标准格式的json字符串,要不jquery1.4+以上版本会报错的,因为不是用eval生成对象了,用的JSON.parse,如果字符串不标准就会报错。

解决方法:

先把 dataType: 'application/json',注释掉
在 success:function(data,textStatus){
                console.log(data);
观察显示的串是否符合 json 格式

最后发现返回的值的确是json格式,但不是标准json格式,所有报错,在下水准太低,不会转为标准格式,所有我就把dataType: ‘application/json’,彻底注释掉了,不指定返回值类型了。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值