【问题标题】:Passing JavaScript variables to PHP as a hidden input将 JavaScript 变量作为隐藏输入传递给 PHP
【发布时间】:2023-03-03 11:55:01
【问题描述】:

我正在使用 CodeIgniter 并在一个包含 JavaScript 的 PHP 文件中,我想将一个 JavaScript 变量传递给正文 (PHP) 并使其成为隐藏输入。但是每当我使用控制器发布值(JavaScript 变量所在的位置)时,它都不会返回任何值。以下是部分代码:

JS:

function pass() {
   //some code
   document.getElementById('yes').innerHTML = yes; //where yes is a var
}

HTML (PHP):

<form action="search">
        <input type="hidden" name="yes" value="<?php $yes= "<p id='yes'> </p>"; echo $yes;?>" />
        <input type="submit" name="yes" value="Done" />
</form>

所以每当我在控制器$yes = $this-&gt;input-&gt;post('yes'); 中发布yes 时,它什么都不返回。

如何传递 JavaScript 变量以便在下一个文件中再次使用它?谢谢!

【问题讨论】:

    标签: php javascript html codeigniter hidden-field


    【解决方案1】:

    你没有设置表单方法,所以它默认为GET
    你应该设置

    <form action="search" method="POST">   
    

    尝试
    JS:

    var yes = "<?php echo $_POST['yes']; ?>";
    document.getElementById('yes').innerHTML = yes;
    

    【讨论】:

      【解决方案2】:

      您必须设置&lt;input&gt;value 属性,而不是innerHTML。您还需要为&lt;input&gt; 指定与其他字段或“提交”按钮不同的名称。最后,您必须为您的&lt;input&gt; 提供一个“id”属性,以便您可以通过getElementById() 实际获得它。

      【讨论】:

        【解决方案3】:

        您应该设置隐藏输入的value,而不是innerHTML。这段代码应该可以工作:

        function pass() {
           //some code
           document.getElementById('yes').value = yes; //where yes is a var
        }
        

        Pointy 指出的另一个问题是,隐藏的输入实际上没有 id,所以你应该给它一个 id(在这种情况下,id 应该是yes)。

        您还应该做的是使用 PHP 将您插入到隐藏输入中的 html 转义,这样它就不会被意外解析。你可以通过htmlspecialchars() 做到这一点:

        <form action="search">
                <input type="hidden" id="yes" name="yes" value="<?php $yes= htmlspecialchars("<p id='yes'> </p>"); echo $yes;?>" />
                <input type="submit" value="Done" />
        </form>
        

        【讨论】:

        • 我试过这个,但是当我对控制器执行$yes= $this-&gt;input-&gt;post('yes'); 并回显它时,它什么也不显示。
        • 听起来问题与 Javascript 无关。如果你只用普通的文本输入替换隐藏的输入,它会起作用吗?
        • 是的,输入的值显示在文本字段中。
        【解决方案4】:
        • 您的submit 按钮和您的hidden 字段具有相同的name 是的

        • 您尝试通过 id yes 访问您的 hidden 输入,并且您的输入 没有此 id ,请改用 getElementByName('yes') 或给 你的隐藏字段id='yes'

        • 你使用innerHtml,它只设置或返回一个元素的内部HTML,它应该是value

        HTML 代码:

        <form action="search">
            <input id='yes' type="hidden" name="yes" value="<?php $yes= "<p id='yes'> </p>"; echo $yes;?>" />
            <input type="submit" name="yess" value="Done" />
        </form>
        

        JS:

        document.getElementById('yes').value = yes;//yes is a variable
        

        【讨论】:

        • 我试过了,但是当我对控制器执行$yes= $this-&gt;input-&gt;post('yes'); 并回显它时,它什么也不显示。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多