我正在使用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变量,以便在下一个文件中再次使用它?谢谢!
答案 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;