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

如何在表单action中传递当前URL的数字ID(非jQuery方案)

解决表单动态设置action并发送POST请求的问题

你的问题出在表单action属性的写法上:用javascript:redictURL('prefix')这种方式时,函数的返回值不会被表单当作提交路径,只是执行了函数但没触发正确的提交流程,导致POST请求发不出去。下面是两种可行的解决方法,都不需要jQuery:

方法一:页面加载时直接设置action

页面加载完成后,直接提取URL中的ID并设置表单的action属性,适合ID不会动态变化的场景:

修改后的表单代码

<form id="prefix-form" method="post">
    <label for="prefix">Pre</label>
    <hr>
    <input type="text" name="prefix" id="email" placeholder="&&prefix&&" required>
    <input type="submit" value="" id="buttonPrefix">
</form>

对应的脚本

// 等待DOM加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
    const form = document.getElementById('prefix-form');
    // 从URL路径中提取ID(假设ID是路径中的第二个部分,比如路径是/123/prefix时,split后[1]就是123)
    const id = location.pathname.split('/')[1];
    // 设置表单的action属性
    form.action = `/${id}/prefix`;
});

方法二:监听提交事件动态设置action

如果需要在提交前才确定ID(比如URL可能动态变化),可以监听表单的submit事件,在提交瞬间修改action:

表单代码和上面一致,脚本改为:

const form = document.getElementById('prefix-form');
form.addEventListener('submit', function() {
    const id = location.pathname.split('/')[1];
    // 这里的this指向表单元素
    this.action = `/${id}/prefix`;
    // 不需要阻止默认事件,设置完action后表单会正常发送POST请求
});

为什么之前的写法无效

表单的action属性需要的是一个具体的URL地址,而javascript:伪协议在这里只会执行对应的脚本函数,不会把函数返回的字符串当作提交目标。所以之前的写法只是调用了redictURL函数,但没有让表单使用返回的路径去提交,自然发不出POST请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:00:20