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

表单提交未传值导致API请求结果无法在HTML页面正常展示问题求助

问题根因

你使用的是type="submit"的表单按钮,点击后会触发表单默认提交行为,浏览器会自动刷新页面,此时异步执行的fetch请求还未完成回调,页面就已经重置了,因此看不到渲染结果。手动在控制台调用函数时不会触发表单提交逻辑,因此功能正常。

修复方案

可以任选以下任意一种方案解决:

  • 方案1:修改按钮类型,取消默认提交行为
    把提交按钮的type属性从submit改为button:
<input type="button" value="Submit" name="submit" onclick="fetchPerson()" />
  • 方案2:阻止表单默认提交事件
    给fetchPerson函数增加事件阻止逻辑,首先修改按钮绑定逻辑:
<input type="submit" value="Submit" name="submit" onclick="fetchPerson(event)" />

然后修改JS函数,第一行增加阻止默认行为的代码:

function fetchPerson(e) {
    e.preventDefault(); // 阻止表单默认提交刷新页面
    var input = document.getElementById('search').value;
    fetch(`notrevealingapi/api/name=${input}`)
    .then(res => res.json())
    .then(data => {
        console.log(data);
        const html = data.data
            .map(hit => {
                return `<p>Hits: ${hit.person}</p>`;
            })
            .join("");
        document.querySelector('#app').insertAdjacentHTML("afterbegin", html);
    })
    // 可选补充:捕获请求错误避免静默失败
    .catch(err => console.error('请求出错:', err))
}
  • 方案3:绑定form的submit事件(更符合前端规范)
    移除按钮的onclick绑定,给form元素绑定提交事件:
<form onsubmit="fetchPerson(event)">
    <input type="text" id="search" placeholder="Enter person">
    <input type="submit" value="Submit" name="submit" />
</form>

JS代码同方案2的修改即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:06:03