You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ajax定时获取控制器数据时去除冗余文本的方法求助

解决Ajax返回多余文本,提取所需数字的方案

嘿,我来帮你搞定这个问题!你需要的是从Ajax响应里只拿到1077和7这两个数字,核心思路要么是在后端控制器里直接返回纯净的目标数据(推荐),要么是在前端对返回内容做提取处理。下面分两种情况给你具体方案:

一、后端控制器层面(推荐做法)

从你给出的代码片段来看,你已经在解析存储过程的返回结果了,但可能没做精准的数据提取,或者响应输出时附带了多余内容。你可以修改控制器代码,只把需要的数字封装成纯净的JSON返回:

function(req, res){
  knex.raw("CALL GetQueuePlay('00');")
  .then(function(result){
    // 解析存储过程返回的结果
    const rawData = JSON.parse(JSON.stringify(result[0][0]));
    
    // 假设rawData里包含你需要的两个数字,键名根据实际结构调整
    const targetData = {
      queue: rawData.queueCount, // 对应你要的1077
      play: rawData.playCount    // 对应你要的7
    };
    
    // 只返回纯净的目标JSON,避免输出任何额外内容
    res.json(targetData);
  })
  .catch(function(err){
    // 错误处理,避免服务器报错返回混乱内容
    res.status(500).json({ error: '获取数据失败:' + err.message });
  });
}

这样前端Ajax拿到的就是{"queue":1077,"play":7}这种干净的JSON,直接取对应字段显示就行,完全不会有多余文本。

二、前端层面(后端无法修改时的妥协方案)

如果后端暂时没法调整,只能拿到带多余文本的响应,那可以在前端用正则表达式提取数字:

// 示例用jQuery的Ajax,原生JS逻辑类似
$.ajax({
  url: '/你的控制器接口地址',
  type: 'GET',
  success: function(response) {
    // 把响应转成字符串,提取所有连续数字
    const numberList = String(response).match(/\d+/g);
    
    // 确保能拿到两个数字,再渲染到页面
    if (numberList && numberList.length >= 2) {
      const queueNum = numberList[0]; // 第一个数字1077
      const playNum = numberList[1];  // 第二个数字7
      
      // 替换成你页面实际的元素选择器
      document.getElementById('queue-display').textContent = queueNum;
      document.getElementById('play-display').textContent = playNum;
    }
  }
});

额外提醒

  • 优先用后端方案,前端正则提取依赖多余文本的格式稳定,如果后端输出格式变化,前端代码会失效;
  • 可以先在浏览器开发者工具的「Network」标签里查看Ajax请求的完整响应内容,确认多余文本的来源(比如是不是控制器里的console.log内容被混入响应了)。

内容的提问来源于stack exchange,提问作者Max13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:18:30