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

PHP生成的下拉表单在HTML页面短暂显示后消失的问题求助

解决动态生成下拉框短暂显示后消失的问题

核心问题很明确:你的<input type="submit">按钮点击后,会默认触发表单的提交行为,导致页面刷新——这就是为什么下拉框刚显示一秒就消失了,页面刷新后所有动态生成的内容都会被重置。

给你几个可行的解决方案:

方案1:阻止submit按钮的默认提交行为

修改按钮的onclick事件,在调用getLoc()后返回false,就能阻止表单提交:

<input type="submit" value="Search" onclick="getLoc(); return false;">

或者在getLoc函数内部通过事件对象阻止默认行为(更规范的写法):

function getLoc(event){
    event.preventDefault(); // 关键:阻止表单默认提交动作
    var dataRequest;
    // 后面的原有代码保持不变...
}

对应的HTML按钮要传递事件参数:

<input type="submit" value="Search" onclick="getLoc(event)">

方案2:把submit按钮改成普通button

直接把按钮类型从submit改成button,这样点击就不会触发表单提交:

<input type="button" value="Search" onclick="getLoc()">

额外的安全建议

你的PHP代码存在SQL注入风险,直接将用户输入拼接到SQL语句里是非常危险的。建议使用预处理语句来避免这个问题:

$queryStr = htmlspecialchars($_POST['searchValue']) . "%";
// 使用预处理语句
$stmt = $conn->prepare("SELECT location FROM `location_lkup` WHERE location LIKE ? ORDER BY `location` ASC");
$stmt->bind_param("s", $queryStr); // "s"表示参数为字符串类型
$stmt->execute();
$locRslt = $stmt->get_result();

// 后面的结果处理代码保持不变...

这样修改后,下拉框应该就能稳定显示了,同时也提升了代码的安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:01:45