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

如何使用jQuery AJAX实时获取数据库状态变更?

实现AJAX轮询监控状态变化

前端jQuery实现(轮询逻辑)

封装递归函数,当状态为pending时持续发起请求,直到状态变为success或error:

function checkStatus(recordId) {
  $.ajax({
    type: 'GET',
    url: `getStatus.php?record_id=${recordId}`,
    dataType: 'json',
    success: function(response) {
      const status = response.status;
      console.log('当前状态:', status);
      
      if (status === 'pending') {
        // 延迟1秒后再次发起请求,避免频繁调用
        setTimeout(() => checkStatus(recordId), 1000);
      } else {
        // 状态非pending,终止轮询并处理结果
        if (status === 'success') {
          console.log('操作成功!');
          // 可添加成功后的业务逻辑
        } else if (status === 'error') {
          console.log('操作失败!');
          // 可添加失败后的业务逻辑
        }
      }
    },
    error: function(xhr, status, error) {
      console.error('请求出错:', error);
      // 请求出错时可选择停止轮询或重试
    }
  });
}

// 启动轮询,传入目标record_id
checkStatus(50);

后端PHP代码修正

1. getStatus.php 调整

确保参数校验与JSON格式返回:

<?php
require_once 'class/class.php'; // 修正语法错误,移除多余括号

$stat = new Stat();

// 校验record_id有效性
if (!isset($_GET['record_id']) || !is_numeric($_GET['record_id'])) {
  echo json_encode(['status' => 'error', 'message' => '无效的record_id']);
  exit;
}

$record_id = (int)$_GET['record_id'];
$statusData = $stat->getStatus($record_id);

echo json_encode($statusData);
?>

2. getStatus() 类方法优化(防SQL注入+规范返回结构)

使用预处理语句避免注入风险,返回统一JSON结构:

public function getStatus($record_id) {
  // 预处理语句防止SQL注入
  $query = "SELECT `status` FROM records WHERE `record_id` = ?";
  $stmt = $this->db->prepare($query); // 假设$this->db为数据库连接实例
  $stmt->bind_param("i", $record_id); // 绑定整数类型参数
  $stmt->execute();
  $result = $stmt->get_result();
  
  if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    return ['status' => $row['status']];
  } else {
    return ['status' => 'error', 'message' => '记录不存在'];
  }
}

关键说明

  • 轮询延迟:设置setTimeout间隔(示例为1秒),避免短时间大量请求压垮服务器,可根据业务调整。
  • 错误处理:前端error回调需处理网络、服务器异常等情况,避免无限等待。
  • SQL防护:必须用预处理语句处理用户输入,禁止直接拼接SQL。
  • 格式统一:前后端用JSON交互,确保状态解析准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:16:04