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

Ajax返回ID Kurir不存在结果时未触发告警且仍更新表单字段问题

问题根因

故障核心原因是后端返回的响应内容首尾存在多余的空白字符/不可见字符,导致前端全等判断不匹配:

  • 常见的多余字符包括PHP文件开头/结尾的空格、换行、UTF-8 BOM头、PHP代码执行过程中意外输出的内容
  • 因为判断response == "ID Kurir tidak di temukan"不成立,所以代码直接走到了赋值的else分支
定位步骤
  1. 前端调试:在Ajax的success回调第一行添加打印代码,查看原始响应内容:
success: function(response) {
  console.log('原始响应内容:', JSON.stringify(response));
  console.log('响应长度:', response.length);
  // 手动计算目标字符串"ID Kurir tidak di temukan"的长度为25,若打印长度大于25,即可确认存在多余字符
}
  1. 后端排查:检查checkdata.php文件,确认<?php标签前没有任何内容,文件末尾不要留多余的空行,尽量删除末尾的?>标签避免意外输出。
修复方案

前端兼容修复

在判断前先对响应内容做trim处理,去除首尾所有空白/不可见字符:

$(document).on("keypress", ".idkurir", function(e) {
  var idkurir = $('#idkurir').val();
  if (e.which == 13) {
    $.ajax({
      type: "POST",
      url: "checkdata.php",
      data: {
        idkurir: idkurir
      },
      success: function(response) {
        // 新增trim处理,清除首尾多余字符
        response = response.trim();
        if (response == "1") {
          alert("Kurir sudah laporan");
        } else if (response == "ID Kurir tidak di temukan") {
          alert(response);
        } else {
          var d = new Date();
          var today_date = ("0" + d.getDate()).slice(-2) + ("0" + (d.getMonth() + 1)).slice(-2);
          $('#nolaporan').val(idkurir + today_date);
          $('#namakurir').val(response);
        }
      }
    });
  }
});

后端根源修复

在输出响应前清空输出缓冲区,输出完成后直接终止执行,避免后续内容意外输出:

<?php
session_start();
// 清空之前所有意外输出的内容
ob_clean();
$connect = mysql_connect("localhost", "root", "");
mysql_select_db("reportchecker", $connect);
$idkurir = $_POST["idkurir"];
$nolaporan = $idkurir . date("dm");
$sql = "SELECT * FROM jampulang WHERE nolaporan = '$nolaporan'";
$result = mysql_query($sql, $connect);
$count = mysql_num_rows($result);
$sql2 = "SELECT * FROM kurir WHERE idkurir = '$idkurir'";
$result2 = mysql_query($sql2, $connect) or die(mysql_error());
$count2 = mysql_num_rows($result2);
if ($count == 1) {
    echo "1";
} else if ($count2 == 1) {
    $row = mysql_fetch_array($result2) or die(mysql_error());
    echo $row['nama'];
} else {
    echo "ID Kurir tidak di temukan";
}
// 终止执行,避免后续输出多余内容
exit;
// 这里不要加?>标签,避免末尾空行输出
额外优化建议
  • 当前使用的mysql扩展已经在PHP7及以上版本被废弃,建议更换为mysqli或PDO扩展操作数据库
  • 现有代码存在SQL注入风险,需要对传入的idkurir参数做转义处理,或者使用预处理语句执行SQL查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:57:00