将JavaScript变量作为隐藏输入传递给PHP

时间:2013-09-01 15:13:30

标签: php javascript html codeigniter hidden-field

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

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中发布$yes = $this->input->post('yes');时,都不返回任何内容。

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

4 个答案:

答案 0 :(得分:0)

  • 您的submit按钮和hidden字段具有相同的name

  • 您尝试按hidden是和您的输入访问id输入 没有此ID,请使用getElementByName('yes')代替或给予 隐藏的字段id='yes'

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

HTML CODE:

<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

答案 1 :(得分:0)

您必须设置value的{​​{1}}属性,而不是<input>。您还需要为innerHTML提供与其他字段不同的名称,或者提交&#34;提交&#34;按钮。最后,你必须给你的<input>一个&#34; id&#34;属性,以便您可以使用<input>实际获得它。

答案 2 :(得分:0)

您应该设置隐藏输入的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>

答案 3 :(得分:0)

您没有设置表单方法,因此默认为GET
你应该设置

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

尝试
JS:

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