繁体   English   中英

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

[英]Passing JavaScript variables to PHP as a hidden input

我正在使用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 ,即$yes = $this->input->post('yes'); 它什么也不返回。

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

  • 您的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

您必须设置<input>value属性,而不是innerHTML 您还需要给<input>一个不同于其他字段的名称或“提交”按钮。 最后,必须为您的<input>一个“ id”属性,以便实际上可以使用getElementById()获得它。

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

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

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

尝试
JS:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM