2013-09-01 114 views
1

我正在使用CodeIgniter和JavaScript中的单个PHP文件,我想将JavaScript变量传递给正文(PHP)并将其作为隐藏输入。但是,无论何时我使用控制器发布值(JavaScript变量所在的位置),它都不会返回任何值。下面是代码的某些部分:将JavaScript变量作为隐藏输入传递给PHP

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->input->post('yes');发布yes它没有返回。

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

回答

0

你did'nt设置形式方法,以便它默认为GET
你应该设置

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

尝试
JS:

var yes = "<?php echo $_POST['yes']; ?>"; 
document.getElementById('yes').innerHTML = yes; 
0
  • submit按钮,您的hidden领域具有相同的name

  • 您尝试通过id是访问您的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 
+0

我试过这个,但是当我做了'$ yes = $ this-> input- > post('yes');'给控制器并回显它,它什么都不显示。 –

0

您必须设置<input>,而不是innerHTMLvalue财产。您还需要给<input>一个不同于其他字段或“提交”按钮的名称。最后,你必须给你的<input>一个“ID”属性,以便你可以用getElementById()实际得到它。

0

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

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

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

你也应该做的一件事是将你插入隐藏输入的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> 
+0

我试过这个,但是当我做了'$ yes = $ this-> input-> post('yes');'给控制器并且回显它时,它什么也没有显示。 –

+0

听起来像这个问题与Javascript无关。如果只用普通的文本输入替换隐藏的输入,那么它是否工作? – skimberk1

+0

是的,输入的值显示在文本框中。 –