【问题标题】:how to pass java script value to php in codeigniter如何在codeigniter中将javascript值传递给php
【发布时间】:2013-08-12 09:12:53
【问题描述】:

我有一个表单,当单击按钮时,通过 java 脚本动态生成两个字段。每次单击按钮时,这两个文本字段将一次又一次生成。现在我得到了生成的文本字段的计数在 JavaScript 的隐藏字段中。如何在每次输入文本框值时通过在数据中附加逗号来获取控制器中隐藏字段的值并在数据库中插入文本字段的值。请帮助我。

我的 javascript 是

<script>
var countbox=0;
var textbox1=0;
var textbox2=0;
function getField()
{
var newtextbox1="name1"+countbox;
var newtextbox2="name2"+countbox;
document.getElementById('renderDiv').innerHTML+='<br/><input type="text" id="'+newtextbox1+'" name="'+newtextbox1+'" /><br/><input type="text" id="'+newtextbox2+'" name="'+newtextbox2+'" />';
document.getElementById('renderDiv').innerHTML+='<br/><input type="hidden" id="hiddentextField" name="hiddentextField" value="'+countbox+'" />';
countbox +=1;

}
</script>

我的html代码是

<input type="button" id="button1" onclick=getField();/>
<div id="renderDiv">




</div>

在这个 div 中,两个文本字段与隐藏字段一起生成 我在提交时没有得到控制器中文本字段的值,也没有得到文本字段的计数。我试过像 $hiddenfield=$this->input->post('hiddentextField');

【问题讨论】:

  • 你需要使用 ajax。如果您使用的是纯 javascrip,请研究 xmlhttp 请求对象
  • 如果在表单中添加字段,它们将与服务器端的任何其他表单字段一样出现。究竟是什么问题?
  • 我在提交时没有得到控制器中文本字段的值,也没有得到文本字段的计数。我试过像 $hiddenfield=$this->input->post('hiddentextField');
  • 应该在 getField() 函数之外。其他明智的具有相同 id="hiddentextField" 的多个元素将被创建。
  • 问题是无法访问controller中的hiddenfield count,能否获取codeigniter中javascript生成的hiddenfield的值

标签: php javascript codeigniter


【解决方案1】:

您必须发布变量才能将其传递给服务器

 <script>
    var countbox=0;
    var textbox1=0;
    var textbox2=0;
    function getField()
    {
    var newtextbox1="name1"+countbox;
    var newtextbox2="name2"+countbox;
    document.getElementById('renderDiv').innerHTML+='<br/><input type="text" id="'+newtextbox1+'" name="'+newtextbox1+'" /><br/><input type="text" id="'+newtextbox2+'" name="'+newtextbox2+'" />';
    document.getElementById('renderDiv').innerHTML+='<br/><input type="hidden" id="hiddentextField" name="hiddentextField" value="'+countbox+'" />';
    countbox +=1;
    window.location.href = "index.php?name=" + countbox-1;
//change index.php to your page name

    }
    </script>

然后在同一页面中

<?php 

$hiddenfield=$_GET["name"];
?>

【讨论】:

    【解决方案2】:

    我之前也遇到过同样的问题,我所做的是将这些文本框插入到表格中,比如说 tableSample

    然后我使用jQuery查找

    var _content = '';
    var _findcontent = $("#tableSample");
    _findcontent.find("tr").each(function(){
      $(this).find("td").each(function(){
        $(this).find("input").each(function(){
          _content += $(this).val+'~'+$(this).attr("id")+'|';
        });
      });
    });
    

    然后使用 ajax 将其传递给您的 PHP

    $.post("<?php echo site_url('controller_name/method_name'); ?>",
    {
        content : _content
    }
    ,function( _data){
    jAlert("alert",_data,"alert");
    });
    

    在您的 PHP 中,您可以使用 explode 来获取所需的值,

    $content_from_page = $this->input->post("content");
    
    $explode_string = array();
    $explode_string = explode("|",$content_from_page );
    $explode_arr = array()
    for($x=0;$x<count($explode_string)-1;$x++)
    {
      $explode_arr[] = explode("~",$explode_string[$x];
    }
    

    然后 print_r($explode_arr);检查

    *注意:这种方法的唯一问题是,如果插入到文本框中的字符是 ~ 或 |,因为它是使用的分隔符。

    【讨论】:

      猜你喜欢
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多