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

如何使用PHP与jQuery调用车辆XML API,根据车牌号自动填充表单

解决方法

1. 修正后端代理接口 api.php

原代码问题说明

  • 目标接口为GET请求类型,原代码错误配置了CURLOPT_POST=1强制用POST方式提交
  • 未获取前端传入的车牌号参数,未动态拼接请求参数
  • 存在语法错误:CURLOPT_POSTFIELDS配置末尾多了多余的点号,还用到了未定义的变量$xmlcontent
  • 未将返回的XML数据解析为前端需要的JSON格式,也没有统一的错误处理逻辑

修正后代码

<?php
// 替换为你的实际接口授权信息
$user = "USERNAME";
$password = "PASSWORD";

// 校验必填参数
if (!isset($_GET['number']) || empty(trim($_GET['number']))) {
    http_response_code(400);
    echo json_encode(['status' => 'error', 'msg' => '缺少车牌号参数']);
    exit;
}
$number = trim($_GET['number']);

// 拼接第三方接口请求地址
$apiUrl = sprintf(
    "https://example.com/xmlService/car.aspx?user=%s&password=%s&number=%s",
    urlencode($user),
    urlencode($password),
    urlencode($number)
);

// 初始化CURL请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, 0); // 明确使用GET请求
// 如第三方接口SSL证书存在问题可临时开启以下两项,生产环境建议关闭
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

$content = curl_exec($ch);

// 处理CURL请求错误
if(curl_errno($ch)) {
    http_response_code(500);
    echo json_encode(['status' => 'error', 'msg' => '接口请求失败:' . curl_error($ch)]);
    curl_close($ch);
    exit;
}
curl_close($ch);

// 解析XML返回结果
$xml = simplexml_load_string($content);
if (!$xml) {
    http_response_code(500);
    echo json_encode(['status' => 'error', 'msg' => '返回数据解析失败']);
    exit;
}

// 组装返回给前端的JSON数据
$result = [
    'status' => 'success',
    'data' => [
        'make' => (string)$xml->make,
        'vehcom' => (string)$xml->vehcom,
        'color' => (string)$xml->color
    ]
];

header('Content-Type: application/json; charset=utf-8');
echo json_encode($result);
?>

2. 修正前端代码

原代码问题说明

  • 未绑定车牌号输入框的change事件,无法在用户输入完成后触发请求
  • 未动态获取输入框内填写的车牌号,固定写死了请求参数
  • 拿到返回结果后没有对应的表单字段填充逻辑

修正后代码

在原有表单代码的底部添加以下JS代码(请确保页面已提前引入jQuery库):

<script type="text/javascript">
// 监听车牌号输入框的内容变更事件
$('#regno').on('change', function() {
    const regNo = $(this).val().trim();
    // 输入为空时清空关联字段
    if (!regNo) {
        $('#make, #vehcom, #color').val('');
        return;
    }

    $.ajax({
        url: 'api.php',
        type: 'GET',
        dataType: 'json',
        data: {'number': regNo},
        success: function(response) {
            if (response.status === 'success') {
                // 自动填充对应字段
                $('#make').val(response.data.make);
                $('#vehcom').val(response.data.vehcom);
                $('#color').val(response.data.color);
            } else {
                alert('获取车辆信息失败:' + response.msg);
                $('#make, #vehcom, #color').val('');
            }
        },
        error: function() {
            alert('网络请求失败,请重试');
            $('#make, #vehcom, #color').val('');
        }
    });
});
</script>

额外注意事项

  • 上线前务必替换api.php中的USERNAME和PASSWORD为你的实际接口授权凭证
  • 建议给api.php增加请求频率限制、来源校验逻辑,避免接口被恶意调用泄露授权信息
  • 可根据业务需要添加加载状态、输入格式校验等交互优化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:45:03