原文链接:https://blog.csdn.net/changqing5818/article/details/53932463

前言

今天遇到个奇怪的问题,使用JQuery的ajax请求,后台的Controller层也接收到请求了,一切处理很正常,但是很奇怪,浏览器Debug发现,responseText是”error”,状态码是0而不是200.

请求源码如下

$.ajax({
type: "POST",
url: targetUrl,
cache: false,
data:post_data,
dataType:"json",
async: true, // 默认为异步请求
error: function(error) {
console.log(error);
},
success: function(data) {
//...
}
});

状态含义

  • 0 - (未初始化)还没有调用send()方法
  • 1 - (载入)已调用send()方法,正在发送请求
  • 2 - (载入完成)send()方法执行完成
  • 3 - (交互)正在解析响应内容
  • 4 - (完成)响应内容解析完成,可以在客户端调用了

问题分析

Query ajax请求错误返回status 0和错误error的问题,分析可能的原因:

  • url不存在(排除) – Controller层定义正确
  • url不可达(排除) – 后台确实接收到请求了,而且处理正确
  • 发送了跨域请求(排除) – 使用CORS Filter, 测试发现也不是
  • 数据格式错(排除) – 浏览器和后台调试发现,数据格式正确
  • ajax在完成之前请求已经被取消(ajax请求没有发出) – 确实是canceled,但是请求确实发出了
  • 请求超时 – 确认问题

解决办法

  • 使用异步请求
  • 将timeout时长设置稍长一点
$.ajax({
type: "POST",
url: targetUrl,
cache: false,
data : post_data, // 传参
dataType : "json",
async: false, // 使用同步操作
timeout : 50000, //超时时间:50秒
error: function(error) {
console.log(error);
},
success: function(data) {
//...
}
});

版权声明:作者写博是为了总结经验,和交流学习之用。 如需转载,请在文章页面明显位置给出原文连接。谢谢!如有问题,请留言!

ajax请求状态码为0的解决办法的更多相关文章

  1. 关于HTTP请求出现 405状态码 not allowed的解决办法

    最近学爬虫.发现httppost请求目标网站会出现405 状态码,原因为 Apache.IIS.Nginx等绝大多数web服务器,都不允许静态文件响应POST请求 所以将post请求改为get请求即可

  2. AJAX请求状态码返回200却跳到error的function

    最近在搞公司的项目时,发现了一个神奇的问题,就是AJAX请求成功,却莫名其妙的不返回到success函数中,而是跳到了error函数中.公司的项目是ASP.NET,这个和用的什么语言没有多大关系,只要 ...

  3. jQuery ajax请求错误返回status 0和错误error的问题

    上周发现一个jQuery ajax请求错误返回status 0和错误error的问题,responseText是"error",状态码是0而不是200: $.ajax({ type ...

  4. http协议组成(请求状态码)

    http请求由:请求行:消息报头:请求正文组成 //请求行 Request URL: http://172.32.4.33:8080/operation/v2/autoServer/queryAuto ...

  5. 使用Typescript重构axios(二十七)——添加请求状态码合法性校验

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  6. C# 导出 Excel 数字列出现‘0’的解决办法

    在DataGird的中某一列全是数字并且长度大于15的字符,在导出excel时数字列第15-18位全部为0. 解决办法:在需导出数字列前加入英文字符状态的单引号(‘ ), 如: <asp:Tem ...

  7. 【VS调试】C#读写Windows 7注册表时抛出“不允许所请求的注册表访问权”的解决办法

    原文:[VS调试]C#读写Windows 7注册表时抛出"不允许所请求的注册表访问权"的解决办法 项目 - 属性 - 安全性,"使用ClickOnce",修改a ...

  8. 启动安卓模拟器报错 emulator: ERROR: x86_64 emulation currently requires hardware acceleration! CPU acceleration status:HAXM must be updated(version 1.1.1<6.0.1) 解决办法

    启动安卓模拟器报错 emulator: ERROR: x86_64 emulation currently requires hardware acceleration!  CPU accelerat ...

  9. uwsgi -- unavailable modifier requested: 0 -- 的解决办法

    nginx 报错 upstream prematurely closed connection while reading response header from upstream 说明是上游服务器 ...

随机推荐

  1. 面试题: java面试经历 已看1 抢红包如何分配每个人抢到的钱 有用 难点的面试题

    2018.03.09 深圳乐唯科技 我看了下感觉这公司貌似挺不错的,面试官人也挺好的,氛围应该很不错,可惜我实力不足,唉,接续努力,下面把面试中印象较深的三个问题写一下. 面试问题1:数据库删除重复数 ...

  2. windows VS2013 编译安装QWT6.1和QWTPolar1.1.1

    QWT的编译和配置 1. 下载QWT从官网 For getting a snapshot with all bugfixes for the latest 5.2 release: svn expor ...

  3. 用C++实现void reverse(char* str)函数,即反转一个null结尾的字符串.

    void reverse(char* str) { char *end = str, *begin=str; char temp; while(*end!='\0') { end++; } end-- ...

  4. 1027C Minimum Value Rectangle

    传送门 题目大意 有n个木棍,让你选4根使得组成的矩形的周长的平方除以面积最小. 分析 这个题看起来就是一个需要证明的贪心,下面我们来证明一下: 所以我们只需要枚举一边所有的a的可能值,然后b就是比a ...

  5. post请求时,出现relationship name error

    原因:在post请求,其属性名在代码中已经修改为partyLocationDtos,但是在swagger中,仍然为partyLocations. 因此,报错.记住,在post请求的时候,要一一对应.写 ...

  6. java全栈day03--循环高级

    今日主要内容介绍1.引用类型变量的创建及使用2.流程控制语句之选择语句3.流程控制语句之循环语句4.循环高级01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner ...

  7. linux core文件机制

    在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开 ...

  8. Web性能权威指南 PDF扫描版​

    Web性能权威指南是谷歌公司高性能团队核心成员的权威之作,堪称实战经验与规范解读完美结合的产物.<Web性能权威指南>目标是涵盖Web开发者技术体系中应该掌握的所有网络及性能优化知识.全书 ...

  9. C#中的多线程 - 高级多线程

    1非阻塞同步Permalink 之前,我们描述了即使是很简单的赋值或更新一个字段也需要同步.尽管锁总能满足这个需求,一个存在竞争的锁意味着肯定有线程会被阻塞,就会导致由上下文切换和调度的延迟带来的开销 ...

  10. How to extract pcd from a rosbag? 如何从rosbag中提取pcd

    4.1 bag_to_pcd Reads a bag file, saving all ROS point cloud messages on a specified topic as PCD fil ...