我想使用 JavaScript 来更改表单的操作,因此我可以在链接到不同页面的同一表单中使用不同的提交输入。
我还增加了使用 Apache 重写更改example.com/page-name
为example.com/index.pl?page=page-name
. 我发现更改表单的操作会导致example.com/index.pl
(没有页面参数)呈现,即使example.com/page-name
地址栏中显示了预期的 URL ( )。
为了解决这个问题,我使用 JavaScript 插入一个隐藏字段来设置页面参数。我仍然更改了表单的操作,以便地址栏显示正确的 URL。
function setAction (element, page)
{
if(checkCondition(page))
{
/* Insert a hidden input into the form to set the page as a parameter.
*/
var input = document.createElement("input");
input.setAttribute("type","hidden");
input.setAttribute("name","page");
input.setAttribute("value",page);
element.form.appendChild(input);
/* Change the form's action. This doesn't chage which page is displayed,
* it just make the URL look right.
*/
element.form.action = '/' + page;
element.form.submit();
}
}
在形式:
<input type="submit" onclick='setAction(this,"my-page")' value="Click Me!" />
这是我的 Apache 重写规则:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^/(.*)$ %{DOCUMENT_ROOT}/index.pl?page=$1&%{QUERY_STRING}
我对任何关于为什么设置操作不起作用的解释感兴趣。