1

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

4

4 回答 4

0

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

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

尝试
JS:

var yes = "<?php echo $_POST['yes']; ?>";
document.getElementById('yes').innerHTML = yes;
于 2013-09-01T16:17:49.330 回答
0
  • 您的submit按钮和您的hidden字段具有相同的name yes

  • 您尝试hidden通过idyes 访问您的输入,而您的输入没有此 id,getElementByName('yes')请改用或提供您的隐藏字段id='yes'

  • 您使用innerHtmlwhich 仅设置或返回元素的内部 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
于 2013-09-01T15:14:39.297 回答
0

您必须设置 的value属性,而<input>不是innerHTML. 您还需要提供与<input>其他字段或“提交”按钮不同的名称。最后,你必须给你<input>一个“id”属性,这样你才能真正用getElementById().

于 2013-09-01T15:15:19.067 回答
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>
于 2013-09-01T15:17:02.183 回答