Javascript 输入到 HTML 表单 onSubmit 与 # 操作到 PHP $_GET(同一文件上的所有代码

Should Javascript Input to HTML form onSubmit with # action to PHP $_GET (all code on same file) work in theory?

本文关键字:文件 代码 GET onSubmit 表单 HTML 输入 Javascript PHP 操作      更新时间:2023-09-26

我让代码请求用户通过以下代码选择日期:

 <script type="text/javascript" charset="utf-8">
            var k3 = new Kalendae(document.getElementById("cal"), {
                months:3,
                format:'DD-MM-YYYY',
                mode:'single'
            });
        </script>

用户通过javascript选择一个日期并点击html提交按钮:

    <form name="input_data" action="#" method="post" 
onSubmit="javascript:location.href="#?date_value=" + k3.getSelected();">

此代码的 html 操作指示它使用 # 重新加载同一页面,以便 php 可以使用以下内容捕获它:

$dateValue= $_GET['date_value'];

如果我回显$dateValue理论上它应该回显原始的javascript输入吗? 如果没有,需要如何修改?

只需使用

<form action="" method="post">

应该工作。

假设您将按钮称为"保存"(名称="保存")。这将使在提交时触发 PHP。

if (isset($_POST['save'])) { // Your stuff here

相反,您应该更新有关更改的卡兰达信息,将其存储在隐藏的输入字段中。我知道提交带有哈希标签的表单会导致多个浏览器出现问题。

如果像这样从表单标记中删除#

<form name="input_data" action="#" method="post" 
onSubmit="javascript:location.href="?date_value=" + k3.getSelected();">

url 将被附加到?date_value=Whatever并调用,但表单提交并抓取操作并将数据发布到它,如果您保留它,则不会调用页面,因此理论上没有原因会因为第二个页面加载而丢失 get 没有值,但您可以通过对表单使用此编辑来使其工作,如下所示:

<script type="text/javascript">
    function edit() {
        document.input_data.action = "?date_value="+k3.getSelected();
    }
</script>
<body>
    <form name="input_data" action="" method="post" onSubmit="javascript:edit();">
        ...
    </form>
</body>

这将发送 get 值以及表单中的 post 值,您可以通过更新表单中的 onSubmit 属性并删除编辑函数来执行此操作而无需使用其他函数,如下所示:

<body>
    <form name="input_data" action="" method="post" onSubmit="javascript:this.action='?date_value'+k3.getSelected();">
        ...
    </form>
</body>