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

本文探讨了AJAX请求返回JSON数据时跳转至error函数而非success函数的原因,并提供了检查和修正JSON数据格式的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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


问题原因:JSON格式转化不规范或者JSON数据转化错误导致的。


JSON建构有两种结构:

1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

2.值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。


注意:JSON数据里面不要有\  专一字符   会导致json数据转化失败

可以拿到后台转化之后的数据用json在线转化工具来测试是否转换成功

在线JSON校验格式地址如下

http://www.bejson.com/

        最近多次遇到这个怪事,希望 对你所有帮助


function timer_list_render() { // 声明变量用于记录当前处理的方案ID var current_scheme_id = 0; // 发起AJAX请求获取方案列表数据 $.ajax({ // 拼接请求URL(httpAddress()返回基础地址) url: httpAddress() + 'scheme/list', // 设置请求头(getLayuiHttpReqHeaders()返回认证信息) headers: getLayuiHttpReqHeaders(), // 使用GET请求方式 type: 'GET', // 请求成功的回调函数 success: function (res) { // 检查响应状态码是否为200(成功) if (res.code === 200) { // 初始化统计变量 var totalTasks = 0; // 总任务计数 var completedTasks = 0; // 已完成任务计数 var upcomingTask = null; // 存储最近即将执行的任务 var executingTasks = []; // 存储正在执行的任务数组 // 从响应中获取方案列表 var schemes = res.data.list; // 获取方案数量 var schemeCnt = schemes.length; // 遍历所有方案 for (let i = 0; i < schemeCnt; i++) { // 跳过无效方案(valid=0) if (schemes[i].valid === 0) continue; // 记录当前方案ID current_scheme_id = schemes[i].id; // 获取当前方案的定时器数组 let timers = schemes[i].timers; // 累加总任务数 totalTasks += timers.length; // 遍历当前方案的所有定时器 for (let j = 0; j < timers.length; j++) { let timer = timers[j]; // 单个定时器对象 // 检查任务状态:4=已完成 if (timer.dayState === 4) { completedTasks++; // 增加已完成计数 } // 检查任务状态:3=执行中 if (timer.dayState === 3) { // 将执行中任务加入数组 executingTasks.push(timer); } // 检查任务状态:2=即将执行 if (timer.dayState === 2) { // 寻找最近即将执行的任务(时间最早的任务) if (!upcomingTask || timer.startTime < upcomingTask.startTime) { upcomingTask = timer; // 更新最近任务 } } } } // 调用函数更新页面统计信息 updateTaskStats(totalTasks, completedTasks, upcomingTask, executingTasks); } else { // 响应码非200时显示错误 showTaskStatsError(); } }, // 请求失败的回调函数 error: function () { showTaskStatsError(); // 显示错误信息 } }); // 更新页面统计信息的函数 function updateTaskStats(total, completed, upcoming, executing) { // 更新今日任务统计区域(已完成/总数) $('#today-tasks').html( '<span class="completed">' + completed + '</span>' + '<span class="separator">/</span>' + '<span class="total">' + total + '</span>' ); // 更新即将执行任务区域 if (upcoming) { // 显示任务时间和名称 $('#upcoming-tasks').html( '<span class="time">' + timestamp2Time(upcoming.startTime) + '</span><br>' + '<span class="name">' + upcoming.name + '</span>' ); } else { // 无任务时显示"无" $('#upcoming-tasks').html('<span class="no-task">无</span>'); } // 更新正在执行任务区域 if (executing.length > 0) { let html = ''; // 遍历所有执行中任务并生成HTML executing.forEach(task => { html += '<div class="executing-task">' + task.name + '</div>'; }); $('#executing-tasks').html(html); } else { // 无任务时显示"无" $('#executing-tasks').html('<span class="no-task">无</span>'); } } // 移除定时刷新机制 // setInterval(timer_list_render, 10000); // 删除这行 }添加一个:添加了数据或修改了数据才会刷新页面
最新发布
06-22
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值