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

如何实现按钮提交车牌信息、跳转新页面并加载API返回的JSON数据?

我明白你现在的需求——把输入表单单独放在index页面,提交后跳转到另一个页面加载并展示汽车牌照对应的API数据对吧?其实核心就是把用户输入的牌照号传递到目标页面,然后在目标页面发起API请求就行,我给你一步步拆解:


第一步:修改Index页面的表单,处理输入并传递参数

你有两种方式实现参数传递,选哪种都可以:

方式1:纯HTML表单提交(最简单)

直接让表单提交到结果页面,用GET方法把牌照号作为URL参数传递:

<!-- index.html -->
<form id="vehicle-smart-sample-form" action="results.html" method="GET">
  <label for="reg">Enter your reg:</label>
  <input type="text" id="reg" name="reg" required placeholder="e.g. ABC123">
  <button type="submit">Load Vehicle Info</button>
</form>

提交后浏览器会跳转到类似 results.html?reg=ABC123 的地址,牌照号就跟着传过去了。

方式2:JavaScript控制跳转(适合加输入验证)

如果需要先验证输入格式再跳转,用JS阻止默认提交,手动处理参数传递:

<!-- index.html -->
<form id="vehicle-smart-sample-form">
  <label for="reg">Enter your reg:</label>
  <input type="text" id="reg" name="reg" required placeholder="e.g. ABC123">
  <button type="submit">Load Vehicle Info</button>
</form>

<script>
document.getElementById('vehicle-smart-sample-form').addEventListener('submit', function(e) {
  e.preventDefault(); // 阻止默认表单提交行为
  const regNumber = document.getElementById('reg').value.trim();
  
  // 简单的格式验证(你可以根据需求调整规则)
  const regPattern = /^[A-Z0-9]+$/i;
  if (!regNumber || !regPattern.test(regNumber)) {
    alert('Please enter a valid vehicle registration number');
    return;
  }
  
  // 跳转到结果页面,用encodeURIComponent处理特殊字符
  window.location.href = `results.html?reg=${encodeURIComponent(regNumber)}`;
});
</script>

第二步:在结果页面(results.html)读取参数并加载API数据

结果页面需要先从URL里提取牌照号,再发起API请求,最后把数据渲染到页面上:

<!-- results.html -->
<!DOCTYPE html>
<html>
<head>
  <title>Vehicle Details</title>
</head>
<body>
  <h1>Vehicle Information</h1>
  <div id="vehicle-data" style="padding: 20px; border: 1px solid #eee;"></div>

  <script>
    // 从URL中获取指定参数的工具函数
    function getUrlParameter(paramName) {
      const urlParams = new URLSearchParams(window.location.search);
      return urlParams.get(paramName);
    }

    // 获取传递过来的牌照号
    const regNumber = getUrlParameter('reg');

    if (regNumber) {
      // 替换成你的实际API地址
      const apiUrl = `https://your-api-endpoint.com/vehicles?reg=${encodeURIComponent(regNumber)}`;
      
      // 发起API请求
      fetch(apiUrl)
        .then(response => {
          if (!response.ok) {
            throw new Error('Failed to fetch vehicle data');
          }
          return response.json();
        })
        .then(data => {
          // 渲染数据到页面(根据你的API返回结构调整字段)
          const vehicleDataDiv = document.getElementById('vehicle-data');
          vehicleDataDiv.innerHTML = `
            <h2>Details for ${regNumber}</h2>
            <ul>
              <li><strong>Make:</strong> ${data.make || 'N/A'}</li>
              <li><strong>Model:</strong> ${data.model || 'N/A'}</li>
              <li><strong>Year:</strong> ${data.year || 'N/A'}</li>
              <li><strong>Color:</strong> ${data.color || 'N/A'}</li>
            </ul>
          `;
        })
        .catch(error => {
          const vehicleDataDiv = document.getElementById('vehicle-data');
          vehicleDataDiv.innerHTML = `<p style="color: red;">Error: ${error.message}</p>`;
        });
    } else {
      // 没有传递牌照号的情况
      const vehicleDataDiv = document.getElementById('vehicle-data');
      vehicleDataDiv.innerHTML = `<p>Please go back to the home page and enter a vehicle registration number.</p>`;
    }
  </script>
</body>
</html>

几个需要注意的细节:

  • 跨域问题:如果你的API和前端页面不在同一个域名下,需要确保API支持CORS(跨域资源共享),否则浏览器会阻止请求。
  • 参数编码:一定要用 encodeURIComponent() 处理牌照号,避免空格、特殊符号等导致的URL解析错误。
  • 错误处理:添加了API请求失败、无参数的情况处理,提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:09:53