为什么我的jQuery Ajax调用失败并返回错误0?
问题排查与解决方案
你的代码本身不存在语法错误,Ajax请求返回状态码0通常是请求被中断或者跨域限制导致的,可按以下方向排查解决:
- 原因1:表单默认提交行为被触发
如果你的#submitOne是<form>标签内的提交按钮,点击时会触发表单默认的页面刷新操作,尚未完成的Ajax请求会被强制中断,就会返回状态码0。
解决方法:修改点击事件的回调,阻止默认行为即可:
$('#submitOne').click(function(e) { e.preventDefault(); // 新增这一行阻止默认提交 // 后续原有代码保持不变 })
- 原因2:跨域资源共享(CORS)限制
你用了完整的http://localhost开头的接口地址,如果你的前端页面是直接打开的本地HTML文件(地址栏为file://开头),或者前端部署的域名、端口和接口不一致,浏览器会出于安全策略拦截响应,导致请求返回状态码0。
解决方法:
- 优先将前端页面也部署在localhost的同一服务下,用相同的域名端口访问页面,不要直接打开本地HTML文件
- 也可以在服务端
getCountryCode.php文件最开头添加CORS允许头:
header('Access-Control-Allow-Origin: *'); header('Content-Type: application/json');
- 原因3:返回内容不符合JSON格式要求
你在请求中指定了dataType: 'json',如果服务端返回的内容不是合法JSON格式(比如存在多余的空格、PHP报错信息、非JSON的文本内容),也会触发请求失败。
临时排查方法:可以先把dataType改成text,如果能正常拿到返回内容,就说明是服务端返回的JSON格式存在问题,排查PHP端的输出即可。
内容的提问来源于stack exchange,提问作者Alistair Jenkins
相关产品推荐
相关产品推荐

